2

私は PPC アセンブリにかなり慣れていないので、コンパイラが分岐リンクをエンコードする方法に興味があります。

例:

00000000 fnc_1()
00000000 std r1 , 0x7FFFF
00000004 li r2 , 0x0
00000008 mr r3 , r2
*** -> 0000000C bl fnc_2 -> | 10010 | ?? 24bits ?? | 0 | 1 | ****
00000010 blr

00000014 fnc_2()
00000014 ..
00000018 ..
0000001C ..
00000020 blr

つまり、私の質問は次のようになります。コンパイラはどのようにしてオフセット 0x14 を取得し、それを bl opcode の 24 ビットに変換するのですか? プログラムを16進数で調べましたが、まだわかりません。私はこれを読みました : http://www.eecs.umich.edu/eecs/courses/eecs373/GreenBook/ch4-bran.pdf

4

1 に答える 1