Arm 错误 A1174E:数据传输偏移量 0x00002000 超出范围。允许的值为 0xFFFFF001 到 0x00000FFF
Arm error A1174E: Data transfer offset 0x00002000 out of range. Permitted values are 0xFFFFF001 to 0x00000FFF
我有一个简单的程序集,它产生了以下错误
大会
LDR r14,[r12,#0x00002000]
错误
testspeed.s(23): error: A1174E: Data transfer offset 0x00002000 out of range. Permitted values are 0xFFFFFF01 to 0x00000FFF
查看 ARM guide 我明白了错误的原因
A1174E: Data transfer offset 0x<val> out of range. Permitted values are 0x<mini> to 0x<maxi>
有人知道这是什么 0x<mini>
和 0x<maxi>
吗?它在哪里设置?我能控制吗。
这是 ARM 指令集的限制。每 the documentation:
Instruction Immediate offset Pre-indexed Post-indexed Arch.
ARM, word or byte [1] -4095 to 4095 -4095 to 4095 -4095 to 4095 All
(出于某种原因,文档中缺少减号。)
您的偏移量太大,无法用作立即数。您必须想出其他方法来访问内存,例如,将其分成两条指令。
ADD r14, r12, #0x00002000
LDR r14, [r14]
我有一个简单的程序集,它产生了以下错误
大会
LDR r14,[r12,#0x00002000]
错误
testspeed.s(23): error: A1174E: Data transfer offset 0x00002000 out of range. Permitted values are 0xFFFFFF01 to 0x00000FFF
查看 ARM guide 我明白了错误的原因
A1174E: Data transfer offset 0x<val> out of range. Permitted values are 0x<mini> to 0x<maxi>
有人知道这是什么 0x<mini>
和 0x<maxi>
吗?它在哪里设置?我能控制吗。
这是 ARM 指令集的限制。每 the documentation:
Instruction Immediate offset Pre-indexed Post-indexed Arch.
ARM, word or byte [1] -4095 to 4095 -4095 to 4095 -4095 to 4095 All
(出于某种原因,文档中缺少减号。)
您的偏移量太大,无法用作立即数。您必须想出其他方法来访问内存,例如,将其分成两条指令。
ADD r14, r12, #0x00002000
LDR r14, [r14]