"Hello World" in Arm Assembly

本文介绍了一个简单的ARM汇编语言程序,该程序会在Android设备上显示“Hello,ARM!”。文章详细解释了ARM体系中系统调用的过程,包括如何编写、编译、链接及在Android设备上运行ARM汇编程序。

1. 编写源文件:hello.S

.data
msg:
        .ascii  "Hello, ARM!\n"
len = . - msg


.text
        .global _start
_start:
        /*Syscall write(int fd, const void *buf, size_t count)*/
        mov %r0, $1     /*输出到stdout,stdout的设备描述符为1*/
        ldr %r1, =msg   /*buf=msg*/
        ldr %r2, =len   /*count=len*/
        mov %r7, $4     /*syscall 4*/
        swi $0          /*invoke syscall*/


        /*Syscall exit*/
        mov %r0, $0
        mov %r7, $1
        swi $0


注:arm体系中,系统调用号保存在r7寄存器中,r0-r6寄存器依次保存参数,使用swi $0来执行系统调用,write函数对应的调用为4, exit对应的调用为1

2. 编译链接:

arm-linux-androideabi-as -o hello.o hello.S

arm-linux-androideabi-ld -s -o hello hello.o

注:如果安装了android-ndk,那么可在toolchains目录里面找到arm-linux-androideabi-as和arm-linux-androideabi-ld一起其他的一些工具

3. 拷贝到android设备上运行:

adb push hello /data/local/tmp/hello

adb shell /data/local/tmp/hello

4. 查看运行结果:

Hello, ARM!


原文出处:http://peterdn.com/post/e28098Hello-World!e28099-in-ARM-assembly.aspx

转载于:https://my.oschina.net/redhouse/blog/100824

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值