Assembly 最短可能气体武器(linux)程序?

Assembly 最短可能气体武器(linux)程序?,assembly,arm,Assembly,Arm,我曾想过学习汇编语言,并决定尝试一下ARM。我决定使用GNU汇编程序,主要是因为它可以在我手机的存储库中找到,这样我可以在任何地方玩汇编程序,如果我觉得无聊的话 无论如何,我已经在网上搜索过了,但是我找不到任何关于如何正确退出ARM Linux二进制文件的参考资料。我知道x86的等价物基本上是将eax寄存器设置为一个指定系统调用的数字,然后调用系统中断0x80来实际执行系统调用,正确地退出程序;现在我想为ARM做一些类似的事情(显然,相同的代码不起作用,因为它使用x86特定的寄存器等等) 是的,

我曾想过学习汇编语言,并决定尝试一下ARM。我决定使用GNU汇编程序,主要是因为它可以在我手机的存储库中找到,这样我可以在任何地方玩汇编程序,如果我觉得无聊的话

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


是的,基本上,我该如何编写一个最小的GAS-ARM可执行文件,简单地以0的退出值正常退出?

这里有一些关于系统调用的信息。您还可以查看的第5页。

中有一些关于系统调用的信息。您也可以查看第5页,共页。


好的,我添加了一个新链接而不是断开的链接。好的,我添加了一个新链接而不是断开的链接。在大多数情况下,您可以从入口点返回(即ARM上的
BX LR
),操作系统/加载程序应该负责关闭进程。在大多数情况下,您可以从入口点返回(即ARM上的
BX LR
),OS/加载程序应负责关闭进程。
.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