gpt4 book ai didi

assembly - ARM 分支指令地址如何工作?

转载 作者:行者123 更新时间:2023-12-01 21:59:54 25 4
gpt4 key购买 nike

我知道 ARM 指令的大小是 32 位,因此在内存中它占用 4 个内存位置(每个位置可以存储 8 位)

但对分支指令地址的工作原理感到困惑

当使用例如一条分支指令

4位用于操作4 位用于条件24 位用于分支位置

为什么地址是 4 * 24 位? - 我以为每条指令地址都是 32 位

24位数字是一个偏移量是什么意思?

最佳答案

来自 ARM7TDMI 手册:

Branch instructions contain a signed 2's complement 24 bit offset. This is shifted left two bits, sign extended to 32 bits, and added to the PC. The instruction can therefore specify a branch of +/- 32Mbytes.

Offset 在这种情况下意味着它是相对于当前 PC 的。

偏移量移动 2 位(即乘以 4)的原因是每条指令都需要字对齐,即指令必须位于 4 的倍数的地址处。两个最低有效位所有这样的地址总是零。由于您知道它们始终为零,因此您可以通过省略这两个最低有效位来在 24 位中存储 26 位偏移量。

关于assembly - ARM 分支指令地址如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com