我正在使用RVDS6_13編譯器,我的處理器是Cortex X1(HERA)。在我需要做一些匯編語言編程的測驗中,我在編譯中得到了以下錯誤:
Error: Err.
錯誤。A1616E:當前指令集不支持指令、偏移、立即或暫存器組合
9 00000000 MOV x28,0xD02E7F30 基本上,我需要加載0xB41138A4到地址位置0xD02E7F30,下面是我的代碼: uj5u.com熱心網友回復: 用特殊的 "字面池" (我把你的存盤空間改成了32位存盤空間,因為我認為你誤用了64位存盤空間) 代替 如果你的二進制檔案應該是位置獨立的,你還必須使用
標籤: MOV x28,0xD02E7F30
STR x28,0xB41138A4
LDR指令加載值,用ADRP指令加載部分地址(除了低12位以外的所有地址)。 然后用剩余的地址位作為位移進行存盤:LDR w28, =0xD02E7F30
ADRP x29, 0xB4113000
STR w28, [x29, 0x8A4] 。
ldr w28, =...指令,你也可以使用MOVZ/MOVK對來擺脫文字池的加載:MOVZ w28, 0x7F30, LSL #0
MOVK w28, 0xD02E, LSL #16
ADRP x29, 0xB4113000
STR w28, [x29, 0x8A4].
LDR w29, =...或MOVZ/MOVK來加載地址,因為ADRP加載了一個PC相關的地址:MOVZ w28, 0x7F30, LSL #0
MOVK w28, 0xD02E, LSL #16
MOVZ x29, 0x38A4, LSL #0
MOVK x29, 0XB411, LSL #16
STR w28, [x29].
