求教这一条ARM汇编指令

inurlcn 2014-02-12 06:11:05


ADR指令, 明明{pc}+4 应该是0x0800d940嘛,怎么最后r0成了0x0800d990呢?
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
inurlcn 2014-02-14
  • 打赏
  • 举报
回复
引用 6 楼 xinzha 的回复:
[quote=引用 4 楼 inurlcn 的回复:] 大哥 别误导人啊, adr真的只是简单的把pc+偏移量赋给r0,不是地址内容啊。 我找到原因了, 是keil调试器显示的问题,不知道怎么解释。 反正在debug时候显示的汇编指令和反汇编时候显示的汇编指令不一样,但是机器码是一样的.
这个指令确实是我弄错了。 你这个是cortex-m系列的吧?16位[/quote] 是的 cortex-m3, adr、ldr均非伪指令
猪头三小队长 2014-02-13
  • 打赏
  • 举报
回复
你把反汇编多贴出来点,在0x0800D944这个位置的内容应该是0x0800D990. pc是当前指令+8,所以pc+4应该是0x0800D944,而adr不是将pc+偏移量赋给目标寄存器,而是把pc+偏移量所指向地址的内容赋给目标寄存器。
猪头三小队长 2014-02-13
  • 打赏
  • 举报
回复
引用 4 楼 inurlcn 的回复:
大哥 别误导人啊, adr真的只是简单的把pc+偏移量赋给r0,不是地址内容啊。 我找到原因了, 是keil调试器显示的问题,不知道怎么解释。 反正在debug时候显示的汇编指令和反汇编时候显示的汇编指令不一样,但是机器码是一样的.
这个指令确实是我弄错了。 你这个是cortex-m系列的吧?16位
inurlcn 2014-02-13
  • 打赏
  • 举报
回复

inurlcn 2014-02-13
  • 打赏
  • 举报
回复
引用 2 楼 xinzha 的回复:
你把反汇编多贴出来点,在0x0800D944这个位置的内容应该是0x0800D990. pc是当前指令+8,所以pc+4应该是0x0800D944,而adr不是将pc+偏移量赋给目标寄存器,而是把pc+偏移量所指向地址的内容赋给目标寄存器。
大哥 别误导人啊, adr真的只是简单的把pc+偏移量赋给r0,不是地址内容啊。 我找到原因了, 是keil调试器显示的问题,不知道怎么解释。 反正在debug时候显示的汇编指令和反汇编时候显示的汇编指令不一样,但是机器码是一样的.

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧