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 に答える