378 lines
4.7 KiB
Text
Executable file
378 lines
4.7 KiB
Text
Executable file
.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,24,$31
|
|
.set noreorder
|
|
.cpload $25
|
|
.set reorder
|
|
addu $sp,$sp,-24
|
|
.mask 0x82000000,-4
|
|
.cprestore 16
|
|
sw $31,20($sp)
|
|
sw $4,24($sp)
|
|
la $4,L.6
|
|
lw $5,0+24($sp)
|
|
jal printf
|
|
la $4,1
|
|
jal exit
|
|
move $2,$0
|
|
L.5:
|
|
lw $25,16($sp)
|
|
lw $31,20($sp)
|
|
addu $sp,$sp,24
|
|
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
|