LDR (THUMB)
このセクションの内容:
構文
LDR{condition} register,=expressionパラメータ
| この命令が |
| ロードするレジスタです。 |
| 任意の32ビット式です。 |
説明
LDR (CODE16)命令と似ていますが、32ビット命令を使用すると、定数をリテラルプールに入れずに、MOVまたはMVN命令でより大きな値を直接ロードできます。
LDR.N命令を使用して16ビットバージョンを明示的に指定することで、16ビット命令が常に生成されます。この場合、32ビット命令がMOVまたはMVNを使用して値を直接ロードできたとしても、定数がリテラルプールに入れられることがあります。
LDR.W命令を使用して32ビットバージョンを明示的に指定することで、32ビット命令が常に生成されます。
.Nまたは.Wのいずれも指定しない場合、RdがR8~R15 (この場合32ビット派生型が生成されます)でない限り、16ビットLDR (CODE16)命令が生成されます。
LDR (CODE16)には、16ビット派生型はMOVS 命令に変換され、プログラムステータスレジスタを変更します。
注記
構文LDR{condition} register, expression2は、LDR (ARM)およびLDR (CODE16)で説明されているように、擬似命令とはみなされません。これは、Advanced RISC Machines Ltd.のUnified Assembler構文で指定されているように通常の命令の一部です。
例
name thumbLdr
extern extLabel section MYCODE:CODE(2)
thumb
ldr r1,=extLabel ; Becomes "ldr r1,[pc,#8]":
nop ; loads extLabel from the
; literal pool.
ldr r2,label ; Becomes "ldr r2,[pc,#0]":
nop ; loads 0xFFEEDDCC into r2.
data
label dc32 0xFFEEDDCC
ltorg ; The literal pool is placed
; here.
end関連項目
16ビットThumb命令のみが使用可能な場合、LDR (CODE16)を参照してください。