2017-02-25 53 views
0

0xEFFFFFF2をARMのレジスタにロードする方法。
これで腐敗はどうなりますか?ARMアセンブリ:MOV命令の基本的な使用

MVN r0, #2D1 

この命令は有効ですか?

+0

何を試してみましたか?どのような問題が発生しましたか?例えば[this](https://community.arm.com/processors/b/blog/posts/how-to-load-constants-in-assembly-for-arm-architecture)のページを参照してください。 –

+0

私はキーワードを強調表示し、(うまくいけば)質問の明快さを改善しました。 – zx485

答えて

0

mvnはちょうど0x2D1から0xFFFFFD2Eに反転しますか?あなたは0x1000000Dの正しい番号の逆数が必要ですか? GNUアセンブラは0x2D1をエンコードし、2は右に回転し、0xD1は回転する値です。あなたはあなた自身がアセンブリ言語にしたい番号を0x2D1を入れて置くのいずれか実行する必要があるマシンコードをあなたはいけない作っている場合を除きそのことについて心配する必要はいけないこの

mov r0,#0xEFFFFFF2 

または

mvn r0,#0x1000000D 

ldr r0,=0xEFFFFFF2 

GNUアセンブラのようなアセンブラ他のいくつかのアセンブラがTではないこと、それはMVN R0、#0x1000000Dを選択し、この場合にMOVを解決する単一の命令を見つけるしようとします単にあなたの定数がmov命令のために悪いことをあなたに伝えて、自分自身でmvnをやらせるように強制する。または、自分でmvnを行うことができます。 gnuアセンブラの場合、3番目の選択肢はmov、mvnを試しますが、どちらもその定数で動作しない場合は、近くに値を置き、pc相対ロードを行います(.textスペースの2ワードを消費します)。