• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

ARMv7架构的ADR指令

武飞扬头像
专心做事spec
帮助3

一.编写测试汇编代码

        创建汇编文件test.asm。

  1.  
    label0:
  2.  
    adr r0,label0
  3.  
    adr r1,label1
  4.  
    mov pc,lr
  5.  
     
  6.  
    label1:
  7.  
    mov pc,lr

二.仅编译不链接

arm-linux-gnueabihf-as -o test.o test.asm

三.确认test.o为arm32指令格式

file test.o

学新通

四.反汇编elf格式文件

arm-linux-gnueabihf-objdump -D test.o  > test.dis

五.查看、分析反汇编代码

         A32架构的ARM采用了三级流水线,所有指令的处理都被拆分为三个阶段:

学新通        

        每条指令为32位,即4字节。当前执行指令的地址 = PC – 8。

        从下图的反汇编代码可知:

(1)adr指令会被转换为add或sub指令。

(2)编译器在编译时,已计算出标签地址相对于PC的偏移量,并记录在指令代码中。

(3)adr指令获得是标签相对于PC的地址,即是运行地址,而非链接地址。

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhifkjgi
系列文章
更多 icon
同类精品
更多 icon
继续加载