在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汇编程序不支持这种形式的伪操作。不幸的是,这是我从其他人那里收到的代码,而且我的汇编知识有限。汇编程序接受的这行代码相当于什么?
答案 0 :(得分:1)
ldr r1,=_spsr_pointer
将转换为:
mov r1,#_spsr_pointer
或
ldr r1,[pc, #offset_to_spsr_ptr]
...
spsr_ptr: .word _spsr_pointer
取决于_spsr_pointer
的值。