簡體   English   中英

與ARM LDR指令關聯的散列(#)值是什么意思?

[英]What does the hash (#) value associated with the ARM LDR instruction mean?

我正在嘗試調試我在應用程序中遇到的崩潰。 堆棧跟蹤指向具有以下格式的LDR指令(感謝反匯編程序):

LDR R3, [R0,#4]

我的問題是關於源組件。 第二個參數中的#4是什么意思? 我假設它是某種偏移量,但我沒有找到支持LDR指令的文檔。

它從R0 + 4字節的地址加載R3。 所以,是的,它是一個字節偏移量。 請參閱尋址模式的此說明

它將R0中的值加4,並將其用作將32位值加載到寄存器R3中的地址

在GNU gas中,僅當不使用.syntax unified時,僅對ARMv7需要散列#

例如,您可以在沒有#的情況下為ARMv8 aarch64-linux-gnu-as編寫它:

LDR x0, [x0,4]

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

.syntax unified
LDR x0, [x0,4]

更多詳細信息: ARM程序集中的立即值是否需要哈希值?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM