MOV、MVN

データ代入命令とデータを代入してビット反転させる命令です。

Show/hide構文

MOV{S}{cond} Rd, Operand2
MOV{cond} Rd, #imm16
MVN{S}{cond} Rd, Operand2

各項目には以下の意味があります。

S

任意に指定できる接尾文字です。S が指定されている場合は、演算結果に基づいて条件フラグが更新されます。

cond

任意の条件コードを指定します。

Rd

デスティネーションレジスタを指定します。

Operand2

フレキシブル第 2 オペランドを指定します。

imm16

0 ~ 65535 の範囲の値を指定します。

Show/hide使用法

MOV 命令は Operand2 の値を Rd にコピーします。

MVN 命令は Operand2 の値を取得し、その値にビットごとの論理 NOT 演算を実行して、結果を Rd に返します。

状況によっては、アセンブラによって MVNMOV に、MOVMVN に置換できる場合があります。逆アセンブルリストを参照するときは、この点に注意して下さい。

Show/hide32 ビット T32 命令での PC および SP の使用

PC(R15)は、32 ビット T32 MOV または MVN 命令では Rd または Operand2 に使用できません。次の例外を除き、SP(R13)は Rd または Operand2 に使用できません。

  • MOV{cond}.W Rd, SPRd に SP は使用不可

  • MOV{cond}.W SP, RmRm に SP は使用不可

Show/hide16 ビット T32 命令での PC および SP の使用

16 ビット T32 MOV{cond} Rd, Rm 命令では PC または SP を使用できますが、RdRm の両方に SP または PC を指定したこれらの命令の使用は非推奨です。

他の MOV{S} または MVN{S} 16 ビット T32 命令では、PC または SP は使用できません。

Show/hideA32 MOV と MVN での PC および SP の使用

レジスタ制御シフトを行うデータ処理命令の場合は、Rd やオペランドに PC は使用できません。

レジスタ制御シフトを行わない命令では、PC の使用は以下の場合を除き、非推奨です。

  • MOVS PC, LR

  • MOV PC, RmRm に PC または SP は使用不可

  • MOV Rd, PCRd に PC または SP は使用不可

SP は Rd または Rm で使用できます。ただし、次の場合を除き、これは非推奨です。

  • MOV SP, RmRm に PC または SP は使用不可

  • MOV Rd, SPRd に PC または SP は使用不可

Note

  • #imm16 値が、許可された Operand2 値でない場合は、MOV Rd, #imm16 で Rd に PC を使用できません。レジスタ制御シフトなしの Operand2 を使う形式では PC を使用できます。

Rm に PC を指定している場合、使用される値は「命令のアドレス + 8」となります。

Rd に PC を指定した場合、以下のようになります。

  • 演算結果に対応するアドレスへの分岐が実行されます。

  • S 接尾文字を使用する場合は、SUBS pc,lr 命令を参照して下さい。

Show/hide条件フラグ

S が指定されている場合、これらの命令では、以下のようになります。

  • 結果に応じて N フラグおよび Z フラグを更新します。

  • Operand2 の計算中に C フラグを更新できます。

  • V フラグは更新しません。

Show/hide16 ビット命令

これらの命令は、T32 コード内では次の形式で使用できます。これらは 16 ビット命令です。

MOVS Rd, #imm

Rd は Lo レジスタである必要があります。imm の範囲は 0 ~ 255 です。この形式は IT ブロック以外でのみ使用できます。

MOV{cond} Rd, #imm

Rd は Lo レジスタである必要があります。imm の範囲は 0 ~ 255 です。この形式は IT ブロック内でのみ使用できます。

MOVS Rd, Rm

RdRm は共に Lo レジスタである必要があります。この形式は IT ブロック以外でのみ使用できます。

MOV{cond} Rd, Rm

RdRm は、Lo または Hi レジスタにすることができます。

MVNS Rd, Rm

RdRm は共に Lo レジスタである必要があります。この形式は IT ブロック以外でのみ使用できます。

MVN{cond} Rd, Rm

RdRm は共に Lo レジスタである必要があります。この形式は IT ブロック内でのみ使用できます。

Show/hide可用性

これらの命令は A32 および T32 で使用できます。

T32 では、これらの命令の 16 ビットおよび 32 ビットバージョンを使用できます。

Show/hide

    MVNNE   r11, #0xF000000B ; A32 のみ。このイミディエート値は
                             ; T32 では使用不可

Show/hide誤用例

    MVN     pc,r3,ASR r0     ; PC とレジスタ制御シフトは一緒に使用できない

Show/hide関連項目

Copyright © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814