2013-02-05 98 views
0
jmp_gen_exp: 
    la  k0, gen_exp_handler   # requires jump indirect 
    jr  k0 
    nop 

編譯器生成上面的代碼不要使用GP註冊

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

你的問題太寬。一種選擇是使用-static選項編譯代碼。不過,你最好解釋一下你試圖用這個「不使用gp註冊」任務來達到的目標。 – MannyNS

回答

1

如果您知道gen_exp_handler的確切地址,您可以使用li僞指令將該地址加載到寄存器$26中。 例如假設gen_exp_handler地址爲0x12345600,那麼你可以發出

li $k0, 0x12345600