最短的GAS ARM(linux)程序?

时间:2011-02-25 00:44:38

标签: assembly arm

我玩弄了学习汇编语言的想法,并决定试试ARM。我决定使用GNU汇编程序,主要是因为它可以在我的手机存储库中使用,因此如果我感到无聊,我可以在任何地方进行汇编。

无论如何,我在网上搜索过,但是我找不到任何关于如何正确退出ARM Linux二进制文件的参考资料。我已经知道x86等价物基本上将eax寄存器设置为指定系统调用的数字,然后调用系统中断0x80来实际执行系统调用,正确退出程序;现在我想为ARM做类似的事情(显然相同的代码不起作用,因为它使用x86特定的寄存器和诸如此类的东西)。

所以是的,基本上,我如何编写一个最小的GAS ARM可执行文件,只需退出正常退出0?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

teensy.s

.global _start
.thumb_func
_start:
    mov r0, #42
    mov r7, #1
    svc #0

Makefile

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