arm汇编b指令是绝对地址还是相对地址跳转?

指令说明是相对地址跳转,但反汇编看是绝对地址跳转,究竟如何?1、指令说明:B指令是最简单的跳转指令。一旦遇到一个B指令,ARM处理器将立即跳转到给定的目标地址,从那里继续... 指令说明是相对地址跳转,但反汇编看是绝对地址跳转,究竟如何?
1、指令说明:B 指令是最简单的跳转指令。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(前后32MB 的地址空间)
2、代码及反汇编:
.globl _start
_start: b start_code--代码,反汇编后如下:
33f80000 <_start>:
33f80000: ea000012 b 33f80050 <start_code>--问题就在此:跳转到33f80050 地址,如果是相对地址,应该是相对于PC计算各偏移,再跳,指令应该类似于: add pc, pc, #20 ,如果是绝对地址跳转,而flash地址是0,ddr地址是33f80000 ,上电启动时,先在flash里运行,执行 b start_code后,不就是跳转到ddr里的33f80050 运行吗?困惑中......,另外还有个困惑,b指令说只能跳转32M空间,如果是绝对地址跳转,不是远远超出了32M了吗?
展开
 我来答
就烦条0o
2018-07-31 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46510
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
B指令的汇编形式为:
b label
:
:
label:
mov r1,r2
mov r2,r3
从汇编指令的书写形式上,确实是一条绝对跳转指令,但是实际上汇编在将“B label”这条指令翻译为机器指令的时候,会计算label相对于当前PC的偏移,将这个偏移值放到机器码中,所以实际上,B跳转指令为相对跳转指令。用相对跳转指令就可以编写位置无关的代码。
paykka
2025-08-05 广告
Paykka 明确提及支持东南亚地区的收款业务,并且在全球范围内都可以开通账户。随着业务的不断发展,其服务覆盖的地区可能会进一步增加,用户可以关注官方的最新信息了解更多详情。... 点击进入详情页
本回答由paykka提供
rockrider001
2011-04-14 · TA获得超过1568个赞
知道小有建树答主
回答量:1200
采纳率:100%
帮助的人:1253万
展开全部
这个范围的限制呢,是要看指令编码了,B指令的编码是这样的
31..28:条件码
27..25:101
24:是否链接标志
23..0:跳转的地址
地址值呢,只有24位长度,因为ARM指令是字对齐的,最低2位永远为0,所以最大值也就是前后32MB的范围,
不过虽然这条指令是有32MB的限制,但是超出32MB时,也是可以使用的,我们也不知道链接器会把目的块放到哪里,必要时链接器会自动添加一些代码实现长距离的跳转。
所以在实际使用中,不用去管这个32MB的限制,当成一个绝对跳转指令就行了。
追问
-----当成一个绝对跳转指令就行了。 -----,对于上面例子,就是跳转到ddr里的33f80050 运行,但这时ddr等还没初始化,也还没搬程序到ddr呀?
追答
b只负责跳转,至于目的地址有没有东西,它可不会管~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0沙屁狗0
2019-10-11 · 超过13用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:19.6万
展开全部
你都反汇编了,就可以对着指令表看看ea000012是啥意思啊。b指令最后24位左移两位,去掉个最高位是符号位,就是要跳的地址,但因为预取,所以还要加个8.
ea000012后面的0x12左移两位加个8就是下一条指令的地址,就是0x50,你看看你的0x50是不是reset。
32M那个就是因为24位左移两位去掉最高位剩25位,2^25=32M
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mipeipei245
2011-04-14 · 超过14用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:0
展开全部
最近在家看了一部 <我的丑娘>感触很深 挺激动的 世界上母爱是最巨大的 在这里盼望友人们要多孝敬父母 时光关联 就写这多 呵呵,美丽集中营
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式