Mips Don';不使用gp寄存器

Mips Don';不使用gp寄存器,mips,mips32,Mips,Mips32,编译器生成上述代码以 jmp_gen_exp: la k0, gen_exp_handler # requires jump indirect jr k0 nop 如何避免使用gp寄存器?如果您知道gen\u exp\u handler的确切地址,可以使用li伪指令将该地址加载到寄存器$26。 例如,假设gen\u exp\u handler地址为0x12345600,则可以发出 000019bc: 8f9affc8 lw

编译器生成上述代码以

jmp_gen_exp:
    la      k0, gen_exp_handler         # requires jump indirect
    jr      k0
    nop

如何避免使用gp寄存器?

如果您知道
gen\u exp\u handler
的确切地址,可以使用
li
伪指令将该地址加载到寄存器
$26
。 例如,假设
gen\u exp\u handler
地址为
0x12345600
,则可以发出

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

你的问题太宽了。您可以选择使用-static选项编译代码。然而,你最好解释一下你到底想通过这个“不要使用gp寄存器”任务实现什么。
  li $k0, 0x12345600