MOV および MVN を使用したイミディエート値のロード

ARM 状態での MOV 命令と MVN 命令を使用したロードについて以下に示します。

Table 8 には、1 つの ARM 命令(データ処理命令)MOV または MVN でロードできる 8 ビットの値の範囲を示しています。ロードする値は、ステップ列に示している値の倍数である必要があります。

Table 9 には、ARMv6T2 以降の 1 つの ARM 命令 MOV でロードできる 16 ビットの値の範囲を示しています。

Table 8. ARM 状態のイミディエート値(8 ビット)

バイナリ10 進数ステップ16 進数MVN の値a備考
000000000000000000000000abcdefgh0-25510 ~ 0xFF-1 ~ -256-
0000000000000000000000abcdefgh000-102040 ~ 0x3FC-4 ~ -1024-
00000000000000000000abcdefgh00000-4080160 ~ 0xFF0-16 ~ -4096-
000000000000000000abcdefgh0000000-16320640 ~ 0x3FC0-64 ~ -16384-
...............-
abcdefgh0000000000000000000000000 ~ 255 x 2242240 ~ 0xFF0000001 ~ 256 x -224-
cdefgh000000000000000000000000ab(ビットパターン)--(ビットパターン)備考の b を参照
efgh000000000000000000000000abcd(ビットパターン)--(ビットパターン)備考の b を参照
gh000000000000000000000000abcdef(ビットパターン)--(ビットパターン)備考の b を参照

Table 9. MOV 命令に使用できる ARM 状態のイミディエート値

バイナリ10 進数ステップ16 進数MVN の値備考
0000000000000000abcdefghijklmnop0-6553510 ~ 0xFFFF-備考の c を参照

Note

以下は、Table 8Table 9 に関する追加説明です。

a

MVN の値は、MVN 命令でオペランドとして直接使用することしかできません。

b

これらの値は、ARM 状態でのみ使用できます。この表に記載した他の値はいずれも、32 ビット Thumb でも使用できます。

c

これらの値は、ARMv6T2 以降のアーキテクチャでのみ使用できます。これらの値は、他の命令ではオペランドとして直接使用することはできません

ARMv6T2 以降のアーキテクチャの Thumb 状態での、MOV 命令と MVN 命令を使用したロードについて以下に示します。

Thumb をサポートしているアーキテクチャの場合、16 ビット Thumb MOV 命令では、0 ~ 255 の範囲内にある任意のイミディエート値をロードできます。

Table 10 には、1 つの 32 ビット Thumb 命令(データ処理命令)MOV または MVN でロードできる値の範囲を示しています。ロードする値は、ステップ列に示している値の倍数である必要があります。

Table 11 には、MOV 32 ビット Thumb 命令でロードできる 16 ビットの値の範囲を示しています。

Table 10. 32 ビット Thumb のイミディエート値

バイナリ10 進数ステップ16 進数MVN の値a備考
000000000000000000000000abcdefgh0-25510 ~ 0xFF-1 ~ -256-
00000000000000000000000abcdefgh00-51020 ~ 0x1FE-2 ~ -512-
0000000000000000000000abcdefgh000-102040 ~ 0x3FC-4 ~ -1024-
...............-
0abcdefgh000000000000000000000000 ~ 255 x 2232230 ~ 0x7F8000001 ~ 256 x -223-
abcdefgh0000000000000000000000000 ~ 255 x 2242240 ~ 0xFF0000001 ~ 256 x -224-
abcdefghabcdefghabcdefghabcdefgh(ビットパターン)-0xXYXYXYXY0xXYXYXYXY-
00000000abcdefgh00000000abcdefgh(ビットパターン)-0x00XY00XY0xFFXYFFXY-
abcdefgh00000000abcdefgh00000000(ビットパターン)-0xXY00XY000xXYFFXYFF-
00000000000000000000abcdefghijkl0-4095 10 ~ 0xFFF-備考の b を参照

Table 11. MOV 命令に使用できる 32 ビット Thumb のイミディエート値

バイナリ10 進数ステップ16 進数MVN の値備考
0000000000000000abcdefghijklmnop0-6553510 ~ 0xFFFF-備考の c を参照

Note

以下は、Table 10Table 11 に関する追加説明です。

a

MVN の値は、MVN 命令でオペランドとして直接使用することしかできません。

b

これらの値は、ADDSUB、および MOV 命令では直接オペランドとして使用できますが、MVN や他のデータ処理命令では直接オペランドとして使用できません。

c

これらの値は、MOV 命令でのみ使用できます。

ARM、Thumb 共に、MOVMVN のどちらを使用するかを決める必要はありません。アセンブラがどちらか適切な方を使用します。この機能は値がアセンブリ時変数である場合に便利です。

使用できないイミディエート値を使用して命令を記述した場合、アセンブラは以下のエラーを通知します。Immediate n out of range for this operation。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311