我有兴趣在循环中使用计数器来使用 Arm 组件不断加载字符串数组。 字符串间隔 16 个字节,索引偏移量为 r4。
@r4 contains 0
printInventory:
ldr r0, =PrintLetter
ldr r1, [=FirstString,r4, LSL #4] @Loads the address of (FirstString + 16*r4)
bl printf
//snip
add r4, r4, #1
b printInventory
编译器不接受此语法。实施这样的事情的可接受的方式是什么?
我意识到,当加载标签时,它实际上是加载一个到电脑的偏移量,即:
ldr r1, =FirstString
其实是
ldr r1, [pc, #0x20]
或者任何标签的偏移量。 我意识到这意味着我所做的事情是行不通的。我的解决方法如下:
printInventory:
ldr r0, =PrintLetter
ldr r1, =FirstString @Loads the address of FirstString
add r1, r1, r4, LSL #4
bl printf
//snip
add r4, r4, #1
b printInventory
如果您遇到类似问题,我希望这对您有所帮助,并感谢那些发表评论的人。