腕の組み立てについて質問です。次の armv7 アセンブリ コードの 16 進バイナリ出力は何ですか?
LDR r3, #0xaabbccdd
BLX r3
このコードフラグメントのアセンブラ出力が必要ですが、コンピューター環境が貧弱です
前もって感謝します
コメント提供者が述べたようにLDR r3,#0xaabbccdd
、有効な指示ではありません。ARMオペコードのイミディエートは、の形式になっています。これにより、eg 、さらには-ZeroExtend(imm8) ROR (imm4*2)
を表すことができますが、egまたは。を表すことはできません。
アセンブラは通常、32ビットのイミディエートをロードするための疑似命令を提供します。たとえば、GASでは次のことができます。0xaa000000
0x00bb0000
0xd000000d
0xaabb0000
0xaabbccdd
ldr r3,=0xaabbccdd
これは、PC相対負荷としてエンコードされます-つまり、ldr r3,[pc,#offset]
。オフセット(したがって正確な命令エンコーディング)は、命令から値が格納されているリテラルプールまでの距離によって異なります。