以下に示す逆アセンブルされたコードに関連する分岐命令(アドレス0x00011004および0x00011010のbおよびbl)について計算されたオフセットがわかりません。私は、16進コードのリストでオフセットが0x000001と0x000002のように見えると思っています。条件b(EA)とb1(EB)のオペコードは、私が期待したものでした。事前にすべてのヒントのアームアセンブラ分岐のオフセット計算の理解
おかげ
MyAssemblerFunc:
00011000 stmdb sp!, {r0 - r3, lr}
00011004 b 00011010
00011008 mov r0, r0
0001100C mov r0, r0
00011010 bl |PrintHelloWorld (11020h)|
00011014 ldmia sp!, {r0 - r3, lr}
関連進コード
0x00011000 0f 40 2d e9 [email protected]é
0x00011004 01 00 00 ea ...ê
0x00011008 00 00 a0 e1 .. á
0x0001100C 00 00 a0 e1 .. á
0x00011010 02 00 00 eb ...ë
0x00011014 0f 40 bd e8 [email protected]è
0x00011018 00 00 a0 e1 .. á
0x0001101C 00 00 a0 e1 .. á
オフセット8に注意してください。0xea000000は1つの命令をスキップします。通常は次の命令にジャンプするので、0xeaffffffはnopになります。 0xeafffffeは単一分岐命令に対する無限ループになります。 'offset =(target-bra_addr-8)>> 2;' – Renate