我玩弄了学习汇编语言的想法,并决定试试ARM。我决定使用GNU汇编程序,主要是因为它可以在我的手机存储库中使用,因此如果我感到无聊,我可以在任何地方进行汇编。
无论如何,我在网上搜索过,但是我找不到任何关于如何正确退出ARM Linux二进制文件的参考资料。我已经知道x86等价物基本上将eax寄存器设置为指定系统调用的数字,然后调用系统中断0x80来实际执行系统调用,正确退出程序;现在我想为ARM做类似的事情(显然相同的代码不起作用,因为它使用x86特定的寄存器和诸如此类的东西)。
所以是的,基本上,我如何编写一个最小的GAS ARM可执行文件,只需退出正常退出0?
答案 0 :(得分:1)
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3105/4有一些关于系统调用的信息。您还可以查看http://isec.pl/papers/into_my_arms_dsls.pdf的第5页。
答案 1 :(得分:0)
.global _start
.thumb_func
_start:
mov r0, #42
mov r7, #1
svc #0
CROSS_COMPILE?=arm-linux-gnueabihf-
teensy:
$(CROSS_COMPILE)as teensy.s -o teensy.o
$(CROSS_COMPILE)ld teensy.o -o teensy
ls -l teensy
$(CROSS_COMPILE)objdump -d teensy.o
$(CROSS_COMPILE)readelf -W -a teensy
clean:
rm teensy teensy.o