问一个arm汇编跳转指令的问题,急

endless 2014-08-08 09:29:19
有这样的场景:

0xb64239cf: str r1, [r0, #0]
0xb64239d1: ldr.w r0, [pc, #112] ; 0xb6423a44
....
0xb643264d: bl 0xb64339d0

请问最后一条跳转指令是跳转到哪一行执行。 谢谢~

已经好久不用CSDN, 所以只有10分可用。对不起大家。

...全文
1033 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2014-09-04
  • 打赏
  • 举报
回复
引用 2 楼 xuweiwei1860 的回复:
建议在链接脚本里面加上强制对齐的语句
前面的是地址 不是机器码 如果是机器码可以理解 地址就无法理解了
猪头三小队长 2014-08-19
  • 打赏
  • 举报
回复
就应该跳转到0xb64339d0这个地址执行啊,这种汇编已经是经过一定程度的转译,适合于人类阅读,要想真正看到原始含义,还是要进行机器码比对。 另外这种非对齐有时是编译器有意为之,并且也完全符合ARM的规范,在早期的ARM中如果进行了arm/thumb混编,需要进行arm/thumb态的切换,有一条规则就是当执行blx这类的指令时,判断最低位,如果最低位为1,那么就从arm态切换到thumb态,反之亦然,因为thumb code的地址都被链接器处理为奇数,所以当发生跳转时就可以进行无缝的转换,你所看到的不对齐只是编译器对这种规则的实现。
fly 100% 2014-08-19
  • 打赏
  • 举报
回复
建议在链接脚本里面加上强制对齐的语句
fly 100% 2014-08-19
  • 打赏
  • 举报
回复
前面的地址都出现了非对齐了 会跳错误中断的 编译的感觉有问题

1,025

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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