zoukankan      html  css  js  c++  java
  • 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}

  • 相关阅读:
    抽象代数学习笔记
    WC2021 游记
    简单的数学题
    前缀和公式
    杜教筛
    [模板]BZOJ4756线段树合并
    SPOJ 694
    bzoj1367 可并堆
    莫比乌斯反演(理论)
    es6 Set数据结构
  • 原文地址:https://www.cnblogs.com/linucos/p/2963311.html
Copyright © 2011-2022 走看看