wf1.sbk (4434B)
1 .set reorder 2 .globl main 3 .text 4 .text 5 .align 2 6 .ent main 7 main: 8 .frame $sp,48,$31 9 .set noreorder 10 .cpload $25 11 .set reorder 12 addu $sp,$sp,-48 13 .mask 0x82000000,-28 14 .cprestore 16 15 sw $31,20($sp) 16 sw $0,-24+48($sp) 17 sw $0,next 18 b L.3 19 L.2: 20 la $4,-20+48($sp) 21 la $5,-24+48($sp) 22 jal lookup 23 lw $15,($2) 24 la $15,1($15) 25 sw $15,($2) 26 L.3: 27 la $4,-20+48($sp) 28 jal getword 29 bne $2,$0,L.2 30 lw $4,-24+48($sp) 31 jal tprint 32 move $2,$0 33 L.1: 34 lw $25,16($sp) 35 lw $31,20($sp) 36 addu $sp,$sp,48 37 j $31 38 .end main 39 .globl err 40 .text 41 .align 2 42 .ent err 43 err: 44 .frame $sp,24,$31 45 .set noreorder 46 .cpload $25 47 .set reorder 48 addu $sp,$sp,-24 49 .mask 0x82000000,-4 50 .cprestore 16 51 sw $31,20($sp) 52 sw $4,24($sp) 53 la $4,L.6 54 lw $5,0+24($sp) 55 jal printf 56 la $4,1 57 jal exit 58 move $2,$0 59 L.5: 60 lw $25,16($sp) 61 lw $31,20($sp) 62 addu $sp,$sp,24 63 j $31 64 .end err 65 .globl getword 66 .text 67 .align 2 68 .ent getword 69 getword: 70 .frame $sp,32,$31 71 .set noreorder 72 .cpload $25 73 .set reorder 74 addu $sp,$sp,-32 75 .mask 0xc2800000,-4 76 sw $23,16($sp) 77 .cprestore 20 78 sw $30,24($sp) 79 sw $31,28($sp) 80 sw $4,32($sp) 81 L.8: 82 L.9: 83 jal getchar 84 move $24,$2 85 move $30,$24 86 la $15,-1 87 beq $24,$15,L.11 88 move $4,$30 89 jal isletter 90 beq $2,$0,L.8 91 L.11: 92 lw $23,0+32($sp) 93 b L.15 94 L.12: 95 move $24,$23 96 la $23,1($24) 97 move $15,$30 98 sb $15,($24) 99 L.13: 100 jal getchar 101 move $30,$2 102 L.15: 103 move $4,$30 104 jal isletter 105 move $30,$2 106 bne $2,$0,L.12 107 sb $0,($23) 108 move $24,$23 109 lw $15,0+32($sp) 110 bleu $24,$15,L.16 111 la $2,1 112 b L.7 113 L.16: 114 move $2,$0 115 L.7: 116 lw $23,16($sp) 117 lw $25,20($sp) 118 lw $30,24($sp) 119 lw $31,28($sp) 120 addu $sp,$sp,32 121 j $31 122 .end getword 123 .globl isletter 124 .text 125 .align 2 126 .ent isletter 127 isletter: 128 .frame $sp,0,$31 129 .set noreorder 130 .cpload $25 131 .set reorder 132 la $24,65 133 blt $4,$24,L.19 134 la $24,90 135 bgt $4,$24,L.19 136 la $4,32($4) 137 L.19: 138 la $24,97 139 blt $4,$24,L.21 140 la $24,122 141 bgt $4,$24,L.21 142 move $2,$4 143 b L.18 144 L.21: 145 move $2,$0 146 L.18: 147 j $31 148 .end isletter 149 .globl lookup 150 .text 151 .align 2 152 .ent lookup 153 lookup: 154 .frame $sp,32,$31 155 .set noreorder 156 .cpload $25 157 .set reorder 158 addu $sp,$sp,-32 159 .mask 0xc2000000,-8 160 .cprestore 16 161 sw $30,20($sp) 162 sw $31,24($sp) 163 sw $4,32($sp) 164 move $30,$5 165 lw $24,($30) 166 beq $24,$0,L.24 167 lw $4,0+32($sp) 168 lw $24,($30) 169 lw $5,12($24) 170 jal strcmp 171 sw $2,-4+32($sp) 172 lw $24,-4+32($sp) 173 bge $24,$0,L.26 174 lw $4,0+32($sp) 175 lw $24,($30) 176 la $5,4($24) 177 jal lookup 178 move $24,$2 179 b L.23 180 L.26: 181 lw $24,-4+32($sp) 182 ble $24,$0,L.28 183 lw $4,0+32($sp) 184 lw $24,($30) 185 la $5,8($24) 186 jal lookup 187 move $24,$2 188 b L.23 189 L.28: 190 lw $2,($30) 191 b L.23 192 L.24: 193 lw $24,next 194 la $15,2000 195 blt $24,$15,L.30 196 la $4,L.32 197 jal err 198 L.30: 199 lw $24,next 200 sll $24,$24,4 201 sw $0,words($24) 202 lw $24,next 203 sll $24,$24,4 204 sw $0,words+8($24) 205 sw $0,words+4($24) 206 lw $4,0+32($sp) 207 jal strlen 208 move $24,$2 209 la $4,1($24) 210 jal malloc 211 lw $15,next 212 sll $15,$15,4 213 sw $2,words+12($15) 214 lw $24,next 215 sll $24,$24,4 216 lw $24,words+12($24) 217 bne $24,$0,L.36 218 la $4,L.39 219 jal err 220 L.36: 221 lw $24,next 222 sll $24,$24,4 223 lw $4,words+12($24) 224 lw $5,0+32($sp) 225 jal strcpy 226 lw $24,next 227 la $15,1($24) 228 sw $15,next 229 sll $24,$24,4 230 la $24,words($24) 231 sw $24,($30) 232 move $2,$24 233 L.23: 234 lw $25,16($sp) 235 lw $30,20($sp) 236 lw $31,24($sp) 237 addu $sp,$sp,32 238 j $31 239 .end lookup 240 .globl tprint 241 .text 242 .align 2 243 .ent tprint 244 tprint: 245 .frame $sp,32,$31 246 .set noreorder 247 .cpload $25 248 .set reorder 249 addu $sp,$sp,-32 250 .mask 0xc2000000,-8 251 .cprestore 16 252 sw $30,20($sp) 253 sw $31,24($sp) 254 move $30,$4 255 move $24,$30 256 beq $24,$0,L.42 257 lw $4,4($30) 258 jal tprint 259 la $4,L.44 260 lw $5,($30) 261 lw $6,12($30) 262 jal printf 263 lw $4,8($30) 264 jal tprint 265 L.42: 266 move $2,$0 267 L.41: 268 lw $25,16($sp) 269 lw $30,20($sp) 270 lw $31,24($sp) 271 addu $sp,$sp,32 272 j $31 273 .end tprint 274 .globl strcmp 275 .text 276 .align 2 277 .ent strcmp 278 strcmp: 279 .frame $sp,0,$31 280 .set noreorder 281 .cpload $25 282 .set reorder 283 b L.47 284 L.46: 285 move $24,$4 286 la $4,1($24) 287 lb $24,($24) 288 bne $24,$0,L.49 289 move $2,$0 290 b L.45 291 L.49: 292 la $5,1($5) 293 L.47: 294 lb $24,($4) 295 lb $15,($5) 296 beq $24,$15,L.46 297 lb $24,($4) 298 bne $24,$0,L.51 299 la $2,-1 300 b L.45 301 L.51: 302 lb $24,($5) 303 bne $24,$0,L.53 304 la $2,1 305 b L.45 306 L.53: 307 lb $24,($4) 308 lb $15,($5) 309 subu $2,$24,$15 310 L.45: 311 j $31 312 .end strcmp 313 .globl next 314 .comm next,4 315 .globl words 316 .comm words,32000 317 .rdata 318 .align 0 319 L.44: 320 .byte 37 321 .byte 100 322 .byte 9 323 .byte 37 324 .byte 115 325 .byte 10 326 .byte 0 327 .align 0 328 L.39: 329 .byte 111 330 .byte 117 331 .byte 116 332 .byte 32 333 .byte 111 334 .byte 102 335 .byte 32 336 .byte 119 337 .byte 111 338 .byte 114 339 .byte 100 340 .byte 32 341 .byte 115 342 .byte 116 343 .byte 111 344 .byte 114 345 .byte 97 346 .byte 103 347 .byte 101 348 .byte 0 349 .align 0 350 L.32: 351 .byte 111 352 .byte 117 353 .byte 116 354 .byte 32 355 .byte 111 356 .byte 102 357 .byte 32 358 .byte 110 359 .byte 111 360 .byte 100 361 .byte 101 362 .byte 32 363 .byte 115 364 .byte 116 365 .byte 111 366 .byte 114 367 .byte 97 368 .byte 103 369 .byte 101 370 .byte 0 371 .align 0 372 L.6: 373 .byte 63 374 .byte 32 375 .byte 37 376 .byte 115 377 .byte 10 378 .byte 0