4.3 イミディエート値のロード

一部のイミディエート値を表すには、1 つの命令ではなく命令のシーケンスを使用する必要がある場合があります。

ARM 命令および Thumb 命令では、32 ビット幅しか使用できません。MOV 命令または MVN 命令を使用すると、命令セットに依存する範囲からイミディエート値をレジスタにロードできます。一部の 32 ビット値は、1 つの 32 ビット命令のイミディエートオペランドとして表現できません。そうした値は、1 つの命令でメモリからロードできます。
ARMv6T2 以降のアーキテクチャでは、MOV 命令を実行してから MOVT を実行することによって、任意の 32 ビットイミディエート値をレジスタにロードすることができます。あるいは、疑似命令の MOV32 を使用すると、命令シーケンスを作成できます。
また、LDR 疑似命令を使用して、イミディエート値をレジスタにロードすることもできます。
多くの汎用イミディエート値は、別のロード命令を使用しなくても、データ処理命令内にオペランドとして直接含めることができます。16 ビット Thumb 命令にオペランドとして含めることができるイミディエート値の範囲は、大幅に狭くなります。
関連する概念
4.5 MOV32 を使用したイミディエート値のロード
4.6 LDR Rd, =const を使用したイミディエート値のロード
8.7 VFP レジスタおよび NEON レジスタへの値のロード
関連する参考文書
4.4 MOV および MVN を使用したイミディエート値のロード
10.46 LDR 疑似命令
非機密扱いPDF file icon PDF 版ARM DUI0473KJ
Copyright © 2010-2014 ARM.All rights reserved.