与 ARM LDR 指令关联的哈希 (#) 值是什么意思?

发布于 2024-11-09 00:14:54 字数 166 浏览 0 评论 0原文

我正在尝试调试我的应用程序中遇到的崩溃。堆栈跟踪指向具有以下格式的 LDR 指令(感谢反汇编程序):

LDR R3, [R0,#4]

我的问题是关于源组件的。第二个参数中的#4是什么意思?我假设它是某种偏移量,但我还没有找到支持 LDR 指令的文档。

I'm trying to debug a crash I am experiencing in my application. The stack trace is pointing to an LDR instruction with the following format (thanks disassembler):

LDR R3, [R0,#4]

My question is in regards to the source component. What does the #4 in the second parameter mean? I'm assuming it is some kind of offset, but I haven't found documentation supporting that for the LDR instruction.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

洒一地阳光 2024-11-16 00:14:54

它从 R0 + 4 字节中的地址加载 R3。所以,是的,它是一个字节偏移量。 请参阅寻址模式的说明

It loads R3 from the address in R0 + 4 bytes. So, yes, it is a byte offset. See this explanation of the addressing modes.

夜访吸血鬼 2024-11-16 00:14:54

它将 R0 中的值加 4,并将其用作将 32 位值加载到寄存器 R3 中的地址

It adds 4 to the value in R0 and uses that as the address to load a 32 bit value into the register R3

○愚か者の日 2024-11-16 00:14:54

在GNU Gas中,只有ARMv7在不使用.syntax Unified时才需要哈希#

例如,您可以不使用来编写它# 对于 ARMv8 aarch64-linux-gnu-as

LDR x0, [x0,4]

或者如果在 arm-linux-gnueabihf-as 中使用 .syntax Unified

.syntax unified
LDR x0, [x0,4]

更多细节at:立即所需的哈希值ARM 汇编中的值?

In GNU gas, the hash # is only required for ARMv7 when not using .syntax unified

For example, you can write it without # for ARMv8 aarch64-linux-gnu-as:

LDR x0, [x0,4]

or if use .syntax unified in arm-linux-gnueabihf-as:

.syntax unified
LDR x0, [x0,4]

More details at: Is the hash required for immediate values in ARM assembly?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文