0

在一个 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 汇编器不支持这种形式的伪操作。不幸的是,这是我从别人那里收到的代码,我的汇编知识有限。汇编器可以接受的这行代码的等价物是什么?

4

1 回答 1

1
ldr r1,=_spsr_pointer

将转换为:

mov r1,#_spsr_pointer

或者

ldr r1,[pc, #offset_to_spsr_ptr]
...
spsr_ptr: .word _spsr_pointer

取决于 的值_spsr_pointer

于 2013-06-04T16:38:35.863 回答