gp?

なんとなくわかるけど、0xfc0 ってどうやってきまるのかな?

00400838 
: int main() { int rc = func(1,2,3,4,5,6,7); return rc; } 400838: 3c1c0fc0 lui gp,0xfc0 40083c: 279c7818 addiu gp,gp,30744 400840: 0399e021 addu gp,gp,t9 400844: 27bdffc8 addiu sp,sp,-56 400848: afbf0030 sw ra,48(sp) 40084c: afbc0020 sw gp,32(sp) 400850: 24020005 li v0,5 400854: afa20010 sw v0,16(sp) 400858: 24020006 li v0,6 40085c: afa20014 sw v0,20(sp) 400860: 24020007 li v0,7 400864: afa20018 sw v0,24(sp) 400868: 24040001 li a0,1 40086c: 24050002 li a1,2 400870: 24060003 li a2,3 400874: 24070004 li a3,4 400878: 8f998038 lw t9,-32712(gp) 40087c: 0320f809 jalr t9 400880: 00000000 nop 400884: 8fbc0020 lw gp,32(sp) 400888: afa20028 sw v0,40(sp) 40088c: 8fa20028 lw v0,40(sp) 400890: 8fbf0030 lw ra,48(sp) 400894: 27bd0038 addiu sp,sp,56 400898: 03e00008 jr ra 40089c: 00000000 nop

リンカー&ローダーをちゃんと読まねば....