gpt4 book ai didi

assembly - 有人可以解释一下 ARM 中的分支操作码吗?

转载 作者:行者123 更新时间:2023-12-05 01:00:14 24 4
gpt4 key购买 nike

我正在尝试创建一个操作码来跳转到一个地址。

我查看了手册,我看到:

B<c> <label>

31 30 29 28 | 27 26 25 24 | 23 ................. 0
cond 1 0 1 0 imm24

我不明白什么 condimm24是。我将如何创建一个操作码来分支到某个地址,例如分支到 0xbeffffbc ?

最佳答案

B是高达 +/-32MB 的相对分支。立即数编码目标地址相对于当前 PC 的有符号偏移量(即这条指令 + 8)——注意这个偏移量是按字数计算的,而不是字节数;由于指令总是字对齐的,任何偏移量的底部两位将始终为 00,因此在编码中是隐式的。
cond与大多数其他 ARM 指令中的谓词字段相同。如果您已经到了探索指令编码的地步,您可能应该已经意识到这一点 - ARM ARM 的“条件执行”部分(我手头的 v7A/R 版本中的 A8.3 部分)有完整的细节。

ARM ARM 的典型烦恼是,虽然在指令描述中描述了编码字段和它们所代表的值,但有时您确实必须交叉引用伪代码才能确切了解发生了什么。

关于assembly - 有人可以解释一下 ARM 中的分支操作码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737035/

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