jmp_gen_exp:
la k0, gen_exp_handler # requires jump indirect
jr k0
nop
编译器生成上面的代码
000019bc: 8f9affc8 lw $26,-56($28) //lw k0,-56(gp)
000019c0: 00000000 nop
000019c4: 275a17d8 addiu $26,$26,6104=0x17d8 //addiu k0,k0,6104
000019c8: 03400008 jr $26 //jr k0
如何避免使用gp寄存器?
答案 0 :(得分:1)
如果您知道gen_exp_handler
的确切地址,则可以使用li
伪指令在寄存器$26
中加载该地址。
例如。假设gen_exp_handler
地址为0x12345600
,那么您可以发出
li $k0, 0x12345600