Skip to main content

IAR Embedded Workbench for Arm 9.70.x

LDR (THUMB)

このセクションの内容:
構文
LDR{condition} register,=expression
パラメータ

condition

この命令がIT命令の後にある場合は、オプションの条件コードです。

register

ロードするレジスタです。

expression

任意の32ビット式です。

説明

LDR (CODE16)命令と似ていますが、32ビット命令を使用すると、定数をリテラルプールに入れずに、MOVまたはMVN命令でより大きな値を直接ロードできます。

LDR.N命令を使用して16ビットバージョンを明示的に指定することで、16ビット命令が常に生成されます。この場合、32ビット命令がMOVまたはMVNを使用して値を直接ロードできたとしても、定数がリテラルプールに入れられることがあります。

LDR.W命令を使用して32ビットバージョンを明示的に指定することで、32ビット命令が常に生成されます。

.Nまたは.Wのいずれも指定しない場合、RdR8R15 (この場合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)を参照してください。