ARMv7架构的ADR指令
一.编写测试汇编代码
创建汇编文件test.asm。
-
label0:
-
adr r0,label0
-
adr r1,label1
-
mov pc,lr
-
-
label1:
-
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
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
微信人名旁边有个图标有什么用
PHP中文网 03-11