ARM汇编Hello,World

it2022-05-05  156

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)