【问题标题】:Shortest possible GAS ARM (linux) program?最短的 GAS ARM (linux) 程序?
【发布时间】:2011-02-25 00:44:38
【问题描述】:

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

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

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

【问题讨论】:

  • 在大多数情况下,您可以从入口点返回(即 ARM 上的 BX LR),操作系统/加载程序应该负责关闭进程。

标签: assembly arm


【解决方案1】:

【讨论】:

  • 好的,我添加了一个新链接而不是损坏的链接。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多