我对 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 操作码中的 24 位。 我已经查看了十六进制的程序,但仍然无法弄清楚。我读过这个:http ://www.eecs.umich.edu/eecs/courses/eecs373/GreenBook/ch4-bran.pdf 任何澄清都会有所帮助!