如何使用* only * assembly为ARM编写程序

时间:2013-06-13 14:57:25

标签: assembly arm

我想为基于ARM的手机(Nexus S)编写一个纯ARM程序集的小程序。 我知道C中的内联汇编,但当我尝试一个简单的程序,如

int main() {
    asm("nop");
    return 0;
}

perf表明,运行该程序消耗了数千条指令和周期。 我不确定为什么......但我相信这是因为加载了最小的C库以便处理int main和返回0等。
我想避免这个..

所以,我想知道是否可以在纯组装中编写一个小程序并在基于ARM的手机(Nexus S)上执行它

3 个答案:

答案 0 :(得分:1)

.globl _start
_start:
   nop
   b .

答案 1 :(得分:1)

首先,您需要一些合适的工具包 - 最重要的是汇编程序。我建议fasmarm

它是基于FASM的交叉组装器 - 您应该在x86机器上编写程序 - Windows或Linux,编译程序然后将其上传到Arm机器执行。

Fasmarm支持全系列Arm处理器和协处理器。

答案 2 :(得分:0)

您可以使用duo gnu arm 编译器+ eclipse IDE。要拥有完整的环境,您还需要bootloader。因为我不得不处理LPC2148 uC,所以我以前使用LPCUSB加载器。它也很容易与eclipse集成......所以加载和编译只需单击一下。

您将使用以下内容找到更多信息: https://www.google.pl/search?num=20&newwindow=1&safe=off&espv=210&es_sm=93&q=gnu+arm+eclipse+plugin+installation

您必须选择适合您的uC的引导加载程序。