在 iPhone 项目中,我正在编译一个 .s 程序集文件。在此文件中,我需要访问外部 C 变量的地址并将其加载到寄存器中。我有以下代码:
_execute_read_spsr:
ldr r0,=_spsr_pointer
ldr r0, [r0]
ldr r0, [r0]
bx lr
但是,在编译时,Clang/LLVM 在方法的第一行抛出错误,指出:
unexpected token in operand
ldr r1,=_spsr_pointer
^
我在某处读到过,iOS 汇编器不支持这种形式的伪操作。不幸的是,这是我从别人那里收到的代码,我的汇编知识有限。汇编器接受的这行代码的等价物是什么?
最佳答案
ldr r1,=_spsr_pointer
将转换为:
mov r1,#_spsr_pointer
或
ldr r1,[pc, #offset_to_spsr_ptr]
...
spsr_ptr: .word _spsr_pointer
取决于_spsr_pointer
的值。
关于ios - LLVM 编译汇编文件的操作数中存在意外标记。替代说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921858/