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/p/2963311.html