.set reorder | |
.globl main | |
.text | |
.text | |
.align 2 | |
.ent main | |
main: | |
.frame $sp,48,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
addu $sp,$sp,-48 | |
.mask 0x82000000,-28 | |
.cprestore 16 | |
sw $31,20($sp) | |
sw $0,-24+48($sp) | |
sw $0,next | |
b L.3 | |
L.2: | |
la $4,-20+48($sp) | |
la $5,-24+48($sp) | |
jal lookup | |
lw $15,($2) | |
la $15,1($15) | |
sw $15,($2) | |
L.3: | |
la $4,-20+48($sp) | |
jal getword | |
bne $2,$0,L.2 | |
lw $4,-24+48($sp) | |
jal tprint | |
move $2,$0 | |
L.1: | |
lw $25,16($sp) | |
lw $31,20($sp) | |
addu $sp,$sp,48 | |
j $31 | |
.end main | |
.globl err | |
.text | |
.align 2 | |
.ent err | |
err: | |
.frame $sp,32,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
addu $sp,$sp,-32 | |
.mask 0x82000000,-12 | |
.cprestore 16 | |
sw $31,20($sp) | |
sw $4,32($sp) | |
la $4,L.6 | |
lw $5,0+32($sp) | |
jal printf | |
la $4,1 | |
jal exit | |
move $2,$0 | |
L.5: | |
lw $25,16($sp) | |
lw $31,20($sp) | |
addu $sp,$sp,32 | |
j $31 | |
.end err | |
.globl getword | |
.text | |
.align 2 | |
.ent getword | |
getword: | |
.frame $sp,32,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
addu $sp,$sp,-32 | |
.mask 0xc2800000,-4 | |
sw $23,16($sp) | |
.cprestore 20 | |
sw $30,24($sp) | |
sw $31,28($sp) | |
sw $4,32($sp) | |
L.8: | |
L.9: | |
jal getchar | |
move $24,$2 | |
move $30,$24 | |
la $15,-1 | |
beq $24,$15,L.11 | |
move $4,$30 | |
jal isletter | |
beq $2,$0,L.8 | |
L.11: | |
lw $23,0+32($sp) | |
b L.15 | |
L.12: | |
move $24,$23 | |
la $23,1($24) | |
move $15,$30 | |
sb $15,($24) | |
L.13: | |
jal getchar | |
move $30,$2 | |
L.15: | |
move $4,$30 | |
jal isletter | |
move $30,$2 | |
bne $2,$0,L.12 | |
sb $0,($23) | |
move $24,$23 | |
lw $15,0+32($sp) | |
bleu $24,$15,L.16 | |
la $2,1 | |
b L.7 | |
L.16: | |
move $2,$0 | |
L.7: | |
lw $23,16($sp) | |
lw $25,20($sp) | |
lw $30,24($sp) | |
lw $31,28($sp) | |
addu $sp,$sp,32 | |
j $31 | |
.end getword | |
.globl isletter | |
.text | |
.align 2 | |
.ent isletter | |
isletter: | |
.frame $sp,0,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
la $24,65 | |
blt $4,$24,L.19 | |
la $24,90 | |
bgt $4,$24,L.19 | |
la $4,32($4) | |
L.19: | |
la $24,97 | |
blt $4,$24,L.21 | |
la $24,122 | |
bgt $4,$24,L.21 | |
move $2,$4 | |
b L.18 | |
L.21: | |
move $2,$0 | |
L.18: | |
j $31 | |
.end isletter | |
.globl lookup | |
.text | |
.align 2 | |
.ent lookup | |
lookup: | |
.frame $sp,32,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
addu $sp,$sp,-32 | |
.mask 0xc2000000,-8 | |
.cprestore 16 | |
sw $30,20($sp) | |
sw $31,24($sp) | |
sw $4,32($sp) | |
move $30,$5 | |
lw $24,($30) | |
beq $24,$0,L.24 | |
lw $4,0+32($sp) | |
lw $24,($30) | |
lw $5,12($24) | |
jal strcmp | |
sw $2,-4+32($sp) | |
lw $24,-4+32($sp) | |
bge $24,$0,L.26 | |
lw $4,0+32($sp) | |
lw $24,($30) | |
la $5,4($24) | |
jal lookup | |
move $24,$2 | |
b L.23 | |
L.26: | |
lw $24,-4+32($sp) | |
ble $24,$0,L.28 | |
lw $4,0+32($sp) | |
lw $24,($30) | |
la $5,8($24) | |
jal lookup | |
move $24,$2 | |
b L.23 | |
L.28: | |
lw $2,($30) | |
b L.23 | |
L.24: | |
lw $24,next | |
la $15,2000 | |
blt $24,$15,L.30 | |
la $4,L.32 | |
jal err | |
L.30: | |
lw $24,next | |
sll $24,$24,4 | |
sw $0,words($24) | |
lw $24,next | |
sll $24,$24,4 | |
sw $0,words+8($24) | |
sw $0,words+4($24) | |
lw $4,0+32($sp) | |
jal strlen | |
move $24,$2 | |
la $4,1($24) | |
jal malloc | |
lw $15,next | |
sll $15,$15,4 | |
sw $2,words+12($15) | |
lw $24,next | |
sll $24,$24,4 | |
lw $24,words+12($24) | |
bne $24,$0,L.36 | |
la $4,L.39 | |
jal err | |
L.36: | |
lw $24,next | |
sll $24,$24,4 | |
lw $4,words+12($24) | |
lw $5,0+32($sp) | |
jal strcpy | |
lw $24,next | |
la $15,1($24) | |
sw $15,next | |
sll $24,$24,4 | |
la $24,words($24) | |
sw $24,($30) | |
move $2,$24 | |
L.23: | |
lw $25,16($sp) | |
lw $30,20($sp) | |
lw $31,24($sp) | |
addu $sp,$sp,32 | |
j $31 | |
.end lookup | |
.globl tprint | |
.text | |
.align 2 | |
.ent tprint | |
tprint: | |
.frame $sp,32,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
addu $sp,$sp,-32 | |
.mask 0xc2000000,-8 | |
.cprestore 16 | |
sw $30,20($sp) | |
sw $31,24($sp) | |
move $30,$4 | |
move $24,$30 | |
beq $24,$0,L.42 | |
lw $4,4($30) | |
jal tprint | |
la $4,L.44 | |
lw $5,($30) | |
lw $6,12($30) | |
jal printf | |
lw $4,8($30) | |
jal tprint | |
L.42: | |
move $2,$0 | |
L.41: | |
lw $25,16($sp) | |
lw $30,20($sp) | |
lw $31,24($sp) | |
addu $sp,$sp,32 | |
j $31 | |
.end tprint | |
.globl strcmp | |
.text | |
.align 2 | |
.ent strcmp | |
strcmp: | |
.frame $sp,0,$31 | |
.set noreorder | |
.cpload $25 | |
.set reorder | |
b L.47 | |
L.46: | |
move $24,$4 | |
la $4,1($24) | |
lb $24,($24) | |
bne $24,$0,L.49 | |
move $2,$0 | |
b L.45 | |
L.49: | |
la $5,1($5) | |
L.47: | |
lb $24,($4) | |
lb $15,($5) | |
beq $24,$15,L.46 | |
lb $24,($4) | |
bne $24,$0,L.51 | |
la $2,-1 | |
b L.45 | |
L.51: | |
lb $24,($5) | |
bne $24,$0,L.53 | |
la $2,1 | |
b L.45 | |
L.53: | |
lb $24,($4) | |
lb $15,($5) | |
subu $2,$24,$15 | |
L.45: | |
j $31 | |
.end strcmp | |
.globl next | |
.comm next,4 | |
.globl words | |
.comm words,32000 | |
.rdata | |
.align 0 | |
L.44: | |
.byte 37 | |
.byte 100 | |
.byte 9 | |
.byte 37 | |
.byte 115 | |
.byte 10 | |
.byte 0 | |
.align 0 | |
L.39: | |
.byte 111 | |
.byte 117 | |
.byte 116 | |
.byte 32 | |
.byte 111 | |
.byte 102 | |
.byte 32 | |
.byte 119 | |
.byte 111 | |
.byte 114 | |
.byte 100 | |
.byte 32 | |
.byte 115 | |
.byte 116 | |
.byte 111 | |
.byte 114 | |
.byte 97 | |
.byte 103 | |
.byte 101 | |
.byte 0 | |
.align 0 | |
L.32: | |
.byte 111 | |
.byte 117 | |
.byte 116 | |
.byte 32 | |
.byte 111 | |
.byte 102 | |
.byte 32 | |
.byte 110 | |
.byte 111 | |
.byte 100 | |
.byte 101 | |
.byte 32 | |
.byte 115 | |
.byte 116 | |
.byte 111 | |
.byte 114 | |
.byte 97 | |
.byte 103 | |
.byte 101 | |
.byte 0 | |
.align 0 | |
L.6: | |
.byte 63 | |
.byte 32 | |
.byte 37 | |
.byte 115 | |
.byte 10 | |
.byte 0 |