1 2 .sdata 3shared: .word 11 4 5 .data 6unshared: 7 .word 1 8 .word 2 9 .word 3 10 .word 4 11 12 .text 13 .ent func 14func: 15 .frame $sp,0,$31 16 .set noreorder 17 .cpload $25 # 0000 lui gp,hi(_gp_disp) 18 # 0004 addiu gp,gp,lo(_gp_disp) 19 # 0008 addu gp,gp,t9 20 .set reorder 21 .cprestore 8 # 000c sw gp,8(sp) 22 .cpadd $4 # 0010 addu a0,a0,gp 23 li $4, 0x12345678 # 0014 lui a0,0x1234 24 # 0018 ori a0,a0,0x5678 25 la $4, shared # 001c lw a0,got(.sdata)(gp) 26 # 0020 nop 27 # 0024 addiu a0,a0,lo(shared) 28 la $4, unshared # 0028 lw a0,got(.data)(gp) 29 # 002c nop 30 # 0030 addiu a0,a0,lo(unshared) 31 la $4, end # 0034 lw a0,got(.text)(gp) 32 # 0038 nop 33 # 003c addiu a0,a0,lo(end) 34 j end # 0040 b end 35 # 0044 nop 36 jal end # 0048 lw t9,got(.text)(gp) 37 # 004c nop 38 # 0050 addiu t9,t9,lo(end) 39 # 0054 jalr t9 40 # 0058 nop 41 # 005c lw gp,8(sp) 42 lw $4, shared # 0060 lw a0,got(.sdata)(gp) 43 # 0064 nop 44 # 0068 addiu a0,a0,lo(shared) 45 # 006c lw a0,(a0) 46 lw $4, unshared # 0070 lw a0,got(.data)(gp) 47 # 0074 nop 48 # 0078 addiu a0,a0,lo(unshared) 49 # 007c lw a0,(a0) 50 lw $4, end # 0080 lw a0,got(.text)(gp) 51 # 0084 nop 52 # 0088 addiu a0,a0,lo(end) 53 # 008c lw a0,(a0) 54 ld $4, shared # 0090 lw at,got(.sdata)(gp) 55 # 0094 nop 56 # 0098 lw a0,lo(shared)(at) 57 # 009c lw a1,lo(shared)+4(at) 58 ld $4, unshared # 00a0 lw at,got(.data)(gp) 59 # 00a4 nop 60 # 00a8 lw a0,lo(unshared)(at) 61 # 00ac lw a1,lo(unshared)+4(at) 62 ld $4, end # 00b0 lw at,got(.text)(gp) 63 # 00b4 nop 64 # 00b8 lw a0,lo(end)(at) 65 # 00bc lw a1,lo(end)+4(at) 66 sw $4, shared # 00c0 lw at,got(.sdata)(gp) 67 # 00c4 nop 68 # 00c8 addiu at,at,lo(shared) 69 # 00cc sw a0,0(at) 70 sw $4, unshared # 00d0 lw at,got(.data)(gp) 71 # 00d4 nop 72 # 00d8 addiu at,at,lo(unshared) 73 # 00dc sw a0,0(at) 74 sd $4, shared # 00e0 lw at,got(.sdata)(gp) 75 # 00e4 nop 76 # 00e8 sw a0,lo(shared)(at) 77 # 00ec sw a1,lo(shared)+4(at) 78 sd $4, unshared # 00f0 lw at,got(.data)(gp) 79 # 00f4 nop 80 # 00f8 sw a0,lo(unshared)(at) 81 # 00fc sw a1,lo(unshared)+4(at) 82 ulh $4, unshared # 0100 lw at,got(.data)(gp) 83 # 0104 nop 84 # 0108 addiu at,at,lo(unshared) 85 # 010c lb a0,0(at) 86 # 0110 lbu at,1(at) 87 # 0114 sll a0,a0,8 88 # 0118 or a0,a0,at 89 ush $4, unshared # 011c lw at,got(.data)(gp) 90 # 0120 nop 91 # 0124 addiu at,at,lo(unshared) 92 # 0128 sb a0,0(at) 93 # 012c srl a0,a0,8 94 # 0130 sb a0,1(at) 95 # 0134 lbu at,0(at) 96 # 0138 sll a0,a0,8 97 # 013c or a0,a0,at 98 ulw $4, unshared # 0140 lw at,got(.data)(gp) 99 # 0144 nop 100 # 0148 addiu at,at,lo(unshared) 101 # 014c lwl a0,0(at) 102 # 0150 lwr a0,3(at) 103 usw $4, unshared # 0154 lw at,got(.data)(gp) 104 # 0158 nop 105 # 015c addiu at,at,lo(unshared) 106 # 0160 swl a0,0(at) 107 # 0164 swr a0,3(at) 108 li.d $4, 1.0 # 0168 lui a0,0x3ff0 109 # 016c move a1,zero 110 li.d $4, 1.9 # 0170 lw at,got(.rodata)(gp) 111 # 0174 lw a0,lo(F1.9)(at) 112 # 0178 lw a1,lo(F1.9)+4(at) 113 li.d $f0, 1.0 # 017c lui at,0x3ff0 114 # 0180 mtc1 at,$f1 115 # 0184 mtc1 zero,$f0 116 li.d $f0, 1.9 # 0188 lw at,got(.rodata)(gp) 117 # 018c ldc1 $f0,lo(L1.9)(at) 118 seq $4, $5, -100 # 0190 addiu a0,a1,100 119 # 0194 sltiu a0,a0,1 120 sne $4, $5, -100 # 0198 addiu a0,a1,100 121 # 019c sltu a0,zero,a0 122 move $4, $5 # 01a0 move a0,a1 123 124# Not available in 32-bit mode 125# dla $4, shared 126# dla $4, unshared 127# uld $4, unshared 128# usd $4, unshared 129 130# Should produce warnings given -mgp32 131# bgt $4, 0x7fffffff, end 132# bgtu $4, 0xffffffff, end 133# ble $4, 0x7fffffff, end 134# bleu $4, 0xffffffff, end 135 136# Should produce warnings given -mfp32 137# add.d $f1, $f2, $f3 138 139 .end func 140 141end: 142 143# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... 144 .space 8 145