打印

关于 ADR 指令 求解

[复制链接]
3883|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LDTEST|  楼主 | 2013-4-4 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 LDTEST 于 2013-4-11 09:50 编辑

                 __main:
0x080000C0 F000F802  BL.W     __scatterload (0x080000C8)
0x080000C4 F000F840  BL.W     __rt_entry (0x08000148)
                 __scatterload:
0x080000C8 A00C      ADR      r0,{pc}+4  ; @0x080000FC
0x080000CA C830      LDM      r0!,{r4-r5}
0x080000CC 3808      SUBS     r0,r0,#0x08
0x080000CE 1824      ADDS     r4,r4,r0
——————————————————————————————————————
0x080000C8 A00C      ADR      r0,{pc}+4  ; @0x080000FC
这一句中  A00C  结果确实是 0x080000FC
但是 ADR      r0,{pc}+4  是怎么得到 这个结果的,求高手高手高高手 解释

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.7 补充
0x080000C8 A00C      ADR      r0,{pc}+4  ; @0x080000FC
此时  pc=0x080000CC
A00C 的执行结果是 0x080000CC+ ExtendTo32(C:00) = 0x080000FC
这个没有问题
此时PC和 运算结果 差0x30  即 48
{pc}+4  这里 4 无论怎么想也不能和 48 挂上关系
另 官方手册中没有查到说明,MDK 中对于 +4  +8  +12 等 汇编后的指令也是不清不楚的,完全看不出来有任何关系

__scatterload 中  ADR      r0,{pc}+4 是  A00C ,自己写的程序中 则是 A000, MDK问题?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.11 结贴说明
ADR 貌似是 ARM-v6m 里加入的指令,之前貌似都是伪指令(也就是 小范围取值,没有查找 ARM7 ARM9 之类的资料,不能确定是不是只是伪指令)
此处问题应该是 MDK BUG,MDK直接在scatterload中使用的机器语言,因而编译正确,但是翻译成汇编出错

对比说明: IAR中同样指令 ,debug时汇编正常
                修改hex文件中此命令,IAR  debug正常,MDK debug 显示依然不正常

由于是  ARM-v6m 的指令,一般不会有 直接用PC作参数的,而且 机器指令正常,估计MDk没有注意到 汇编存在问题

沙发
cjhk| | 2013-4-4 18:39 | 只看该作者
顶起来  这一块不是很了解   呵呵   顶起来   不错哦

使用特权

评论回复
板凳
LDTEST|  楼主 | 2013-4-5 14:00 | 只看该作者
自己顶一下,沉的太快了!

使用特权

评论回复
地板
LDTEST|  楼主 | 2013-4-6 20:18 | 只看该作者
再顶一下……

使用特权

评论回复
5
airwill| | 2013-4-7 12:31 | 只看该作者
ADR是小范围的地址读取伪指令.ADR 指令将基于PC 相对偏移的地址值读取到寄存器中.

使用特权

评论回复
6
LDTEST|  楼主 | 2013-4-7 13:47 | 只看该作者
airwill 发表于 2013-4-7 12:31
ADR是小范围的地址读取伪指令.ADR 指令将基于PC 相对偏移的地址值读取到寄存器中. ...

版主莫要偷懒~

使用特权

评论回复
7
hawksabre| | 2013-4-7 18:07 | 只看该作者
继续呼叫版主   呵呵   一定要帮兄弟把这个问题解决了   呵呵

使用特权

评论回复
8
LDTEST|  楼主 | 2013-4-11 09:41 | 只看该作者
结贴!原因说明请看一楼!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生自古谁无死,不如自挂东南枝 春风得意马蹄疾,一日挂尽东南枝 天生我材必有用,只为自挂东南枝 谁能自弃凌云笔,虚挂东南十万枝 抱剑惜无百战诀,挂人还仗东南枝 问君能有几多愁,天天自挂东南枝

5

主题

301

帖子

3

粉丝