.text .ent func1 func1: .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) # 0008 addu gp,gp,t9 .set reorder .cprestore 8 # 000c sw gp,8(sp) jal end # 0010 lw t9,got(.text)(gp) # 0014 nop # 0018 addiu t9,t9,lo(end) # 001c jalr t9 # 0020 nop # 0024 lw gp,8(sp) # Avoid confusion: avoid the 'lw' above being put into the delay # slot for the jalr below! .set noreorder nop # 0028 nop .set reorder jal $25 # 002c jalr t9 # 0030 nop # 0034 lw gp,8(sp) .end func1 .text .ent func2 func2: .frame $sp,0,$31 .set noreorder .cpload $25 # 0038 lui gp,hi(_gp_disp) # 003c addiu gp,gp,lo(_gp_disp) # 0040 addu gp,gp,t9 .set reorder .cprestore 32768 # 0044 lui at,0x1 # 0048 addu at,at,sp # 004c sw gp,-32768(at) jal end # 0050 lw t9,got(.text)(gp) # 0054 nop # 0058 addiu t9,t9,lo(end) # 005c jalr t9 # 0060 nop # 0064 lui at,0x1 # 0068 addu at,at,sp # 006c lw gp,-32768(at) # Avoid confusion: avoid the 'lw' above being put into the delay # slot for the jalr below! .set noreorder nop # 0070 nop .set reorder jal $25 # 0074 jalr t9 # 0078 nop # 007c lui at,0x1 # 0080 addu at,at,sp # 0084 lw gp,-32768(at) .end func2 .text .ent func3 func3: .frame $sp,0,$31 .set noreorder .cpload $25 # 0088 lui gp,hi(_gp_disp) # 008c addiu gp,gp,lo(_gp_disp) # 0090 addu gp,gp,t9 .set reorder .cprestore 65536 # 0094 lui at,0x1 # 0098 addu at,at,sp # 009c sw gp,0(at) jal end # 00a0 lw t9,got(.text)(gp) # 00a4 nop # 00a8 addiu t9,t9,lo(end) # 00ac jalr t9 # 00b0 nop # 00b4 lui at,0x1 # 00b8 addu at,at,sp # 00bc lw gp,0(at) # Avoid confusion: avoid the 'lw' above being put into the delay # slot for the jalr below! .set noreorder nop # 00c0 nop .set reorder jal $25 # 00c4 jalr t9 # 00c8 nop # 00cc lui at,0x1 # 00d0 addu at,at,sp # 00d4 lw gp,0(at) .end func3 end: # Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... .space 8