assembly - ARM 汇编分支到寄存器或内存内部的地址

标签 assembly arm

我想知道在 ARM 汇编中我可以使用哪条指令来分支到存储在某个内存地址中的地址或标签。

例如,我们可以使用B LABEL来跳转到LABEL。但现在目的地只能在运行时知道,并且它存储在某个已知的内存位置,有类似 B [地址] 的东西吗?

谢谢!

最佳答案

is there something like B [address]?

没有。首先将地址加载到寄存器中,然后使用 BX跳转到它:

@ In this example, R0 points to the address to jump to
LDR R1, [R0]
BX R1

您还可以将地址直接加载到 PC 中(尽管我不确定这是否在所有 ARM 架构中都有效,因此请查阅相关引用文档):

@ In this example, R0 points to the address to jump to
LDR PC, [R0]

关于assembly - ARM 汇编分支到寄存器或内存内部的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304646/

相关文章:

linux - 符号、ELF 以及如何在内存中链接

assembly - (ARM 汇编)将寄存器右移 1 将所有位设置为零

c - 按位运算符比较错误

assembly - 节/段指令有多重要?

assembly - Homoiconic和 “unrestricted”自修改代码+ Lisp真的是自修改的吗?

c - A20 SoC 上的数据中止

c++ - 'ClassName' 和 'ClassInstance' 未在此范围内声明

assembly - ARM 处理器上 BP 寄存器(帧指针)的等价物是什么?

assembly - 关于汇编中的push ebp和pop ebp指令的解释

c++ - 内联汇编 Visual C++ 从指针获取值