ARM汇编Hello,World

1. 编译运行环境见

http://www.cnblogs.com/linucos/archive/2013/03/01/2938517.htm

 

2. 汇编例子

 

  .data  
  msg:  .asciz  "hello, world\n"  
 
  .text  
  .global main                                                                                                                       
  main:  
  push    {r0,r1,r2,lr}
  ldr     r1, =msg         @ address  
  mov     r0, #1          @ stdout  
  mov     r2, #13         @ length  
  swi     #0x900004       @ sys_write  
  pop     {r0,r1,r2,pc}

3. 编译运行

arm-linux-gnueabi-gcc asmhello.s -o asmhello

qemu上运行./asmhello 即可

4. C例子

 

 #include <stdio.h>
 
  int main(void)
  {
      fprintf(stderr, "%s\n", __FILE__);                                                                                             
      return 0;
  }

5. 编译运行

arm-linux-gnueabi-gcc  hello.c -o hello

6. C例子反汇编

arm-linux-gnueabi-objdump -d hello > hello.dis

 

发现:main函数返回用 pop {r7,pc}实际对应的是push {r7,lr}

转载于:https://www.cnblogs.com/linucos/archive/2013/03/16/2963311.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值