400 lines
5.4 KiB
Text
Executable file
400 lines
5.4 KiB
Text
Executable file
.globl main
|
|
.text
|
|
.text
|
|
.ent main
|
|
main:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-96($sp)
|
|
.mask 0x4000000,-96
|
|
.frame $sp,96,$26,48
|
|
stq $26,0($sp)
|
|
.prologue 1
|
|
stq $31,-88+96($sp)
|
|
stl $31,next
|
|
br L.3
|
|
L.2:
|
|
lda $16,-76+96($sp)
|
|
lda $17,-88+96($sp)
|
|
jsr $26,lookup
|
|
ldgp $gp,0($26)
|
|
ldl $25,($0)
|
|
lda $25,1($25)
|
|
stl $25,($0)
|
|
L.3:
|
|
lda $16,-76+96($sp)
|
|
jsr $26,getword
|
|
ldgp $gp,0($26)
|
|
cmpeq $0,$31,$23
|
|
beq $23,L.2
|
|
ldq $16,-88+96($sp)
|
|
jsr $26,tprint
|
|
ldgp $gp,0($26)
|
|
mov $31,$0
|
|
L.1:
|
|
ldq $26,0($sp)
|
|
lda $sp,96($sp)
|
|
ret
|
|
.end main
|
|
.globl err
|
|
.text
|
|
.ent err
|
|
err:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-64($sp)
|
|
.mask 0x4000000,-64
|
|
.frame $sp,64,$26,48
|
|
stq $26,0($sp)
|
|
stq $16,16($sp)
|
|
.prologue 1
|
|
lda $16,L.6
|
|
ldq $17,-48+64($sp)
|
|
jsr $26,printf
|
|
ldgp $gp,0($26)
|
|
lda $16,1
|
|
jsr $26,exit
|
|
ldgp $gp,0($26)
|
|
mov $31,$0
|
|
L.5:
|
|
ldq $26,0($sp)
|
|
lda $sp,64($sp)
|
|
ret
|
|
.end err
|
|
.globl getword
|
|
.text
|
|
.ent getword
|
|
getword:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-96($sp)
|
|
.mask 0x5006000,-72
|
|
.frame $sp,96,$26,48
|
|
stq $13,0($sp)
|
|
stq $14,8($sp)
|
|
stq $24,16($sp)
|
|
stq $26,24($sp)
|
|
stq $16,48($sp)
|
|
.prologue 1
|
|
L.8:
|
|
L.9:
|
|
jsr $26,getchar
|
|
ldgp $gp,0($26)
|
|
mov $0,$27
|
|
mov $27,$14
|
|
lda $25,-1
|
|
cmpeq $27,$25,$23
|
|
bne $23,L.11
|
|
mov $14,$16
|
|
jsr $26,isletter
|
|
ldgp $gp,0($26)
|
|
cmpeq $0,$31,$23
|
|
bne $23,L.8
|
|
L.11:
|
|
ldq $13,-48+96($sp)
|
|
br L.15
|
|
L.12:
|
|
mov $13,$27
|
|
lda $13,1($27)
|
|
mov $14,$25
|
|
stb $25,($27)
|
|
L.13:
|
|
jsr $26,getchar
|
|
ldgp $gp,0($26)
|
|
mov $0,$14
|
|
L.15:
|
|
mov $14,$16
|
|
jsr $26,isletter
|
|
ldgp $gp,0($26)
|
|
mov $0,$14
|
|
cmpeq $0,$31,$23
|
|
beq $23,L.12
|
|
stb $31,($13)
|
|
mov $13,$27
|
|
ldq $25,-48+96($sp)
|
|
cmpule $27,$25,$23
|
|
bne $23,L.16
|
|
lda $0,1
|
|
br L.7
|
|
L.16:
|
|
mov $31,$0
|
|
L.7:
|
|
ldq $13,0($sp)
|
|
ldq $14,8($sp)
|
|
ldq $24,16($sp)
|
|
ldq $26,24($sp)
|
|
lda $sp,96($sp)
|
|
ret
|
|
.end getword
|
|
.globl isletter
|
|
.text
|
|
.ent isletter
|
|
isletter:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-64($sp)
|
|
.frame $sp,64,$26,48
|
|
.prologue 1
|
|
lda $27,65
|
|
cmplt $16,$27,$23
|
|
bne $23,L.19
|
|
lda $27,90
|
|
cmple $16,$27,$23
|
|
beq $23,L.19
|
|
lda $16,32($16)
|
|
L.19:
|
|
lda $27,97
|
|
cmplt $16,$27,$23
|
|
bne $23,L.21
|
|
lda $27,122
|
|
cmple $16,$27,$23
|
|
beq $23,L.21
|
|
mov $16,$0
|
|
br L.18
|
|
L.21:
|
|
mov $31,$0
|
|
L.18:
|
|
lda $sp,64($sp)
|
|
ret
|
|
.end isletter
|
|
.globl lookup
|
|
.text
|
|
.ent lookup
|
|
lookup:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-80($sp)
|
|
.mask 0x4004000,-72
|
|
.frame $sp,80,$26,48
|
|
stq $14,0($sp)
|
|
stq $26,8($sp)
|
|
stq $16,32($sp)
|
|
mov $17,$14
|
|
.prologue 1
|
|
ldq $27,($14)
|
|
cmpeq $27,$31,$23
|
|
bne $23,L.24
|
|
ldq $16,-48+80($sp)
|
|
ldq $27,($14)
|
|
ldq $17,24($27)
|
|
jsr $26,strcmp
|
|
ldgp $gp,0($26)
|
|
stl $0,-60+80($sp)
|
|
ldl $27,-60+80($sp)
|
|
cmplt $27,$31,$23
|
|
beq $23,L.26
|
|
ldq $16,-48+80($sp)
|
|
ldq $27,($14)
|
|
lda $17,8($27)
|
|
jsr $26,lookup
|
|
ldgp $gp,0($26)
|
|
mov $0,$27
|
|
br L.23
|
|
L.26:
|
|
ldl $27,-60+80($sp)
|
|
cmple $27,$31,$23
|
|
bne $23,L.28
|
|
ldq $16,-48+80($sp)
|
|
ldq $27,($14)
|
|
lda $17,16($27)
|
|
jsr $26,lookup
|
|
ldgp $gp,0($26)
|
|
mov $0,$27
|
|
br L.23
|
|
L.28:
|
|
ldq $0,($14)
|
|
br L.23
|
|
L.24:
|
|
ldl $27,next
|
|
lda $25,2000
|
|
cmplt $27,$25,$23
|
|
bne $23,L.30
|
|
lda $16,L.32
|
|
jsr $26,err
|
|
ldgp $gp,0($26)
|
|
L.30:
|
|
ldl $27,next
|
|
sll $27,5,$27
|
|
stl $31,words($27)
|
|
ldl $27,next
|
|
sll $27,5,$27
|
|
stq $31,words+16($27)
|
|
stq $31,words+8($27)
|
|
ldq $16,-48+80($sp)
|
|
jsr $26,strlen
|
|
ldgp $gp,0($26)
|
|
mov $0,$27
|
|
lda $16,1($27)
|
|
jsr $26,malloc
|
|
ldgp $gp,0($26)
|
|
ldl $25,next
|
|
sll $25,5,$25
|
|
stq $0,words+24($25)
|
|
ldl $27,next
|
|
sll $27,5,$27
|
|
ldq $27,words+24($27)
|
|
cmpeq $27,$31,$23
|
|
beq $23,L.36
|
|
lda $16,L.39
|
|
jsr $26,err
|
|
ldgp $gp,0($26)
|
|
L.36:
|
|
ldl $27,next
|
|
sll $27,5,$27
|
|
ldq $16,words+24($27)
|
|
ldq $17,-48+80($sp)
|
|
jsr $26,strcpy
|
|
ldgp $gp,0($26)
|
|
ldl $27,next
|
|
lda $25,1($27)
|
|
stl $25,next
|
|
sll $27,8*(8-4),$27
|
|
sra $27,8*(8-4),$27
|
|
sll $27,5,$27
|
|
lda $27,words($27)
|
|
stq $27,($14)
|
|
mov $27,$0
|
|
L.23:
|
|
ldq $14,0($sp)
|
|
ldq $26,8($sp)
|
|
lda $sp,80($sp)
|
|
ret
|
|
.end lookup
|
|
.globl tprint
|
|
.text
|
|
.ent tprint
|
|
tprint:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-80($sp)
|
|
.mask 0x4004000,-72
|
|
.frame $sp,80,$26,48
|
|
stq $14,0($sp)
|
|
stq $26,8($sp)
|
|
mov $16,$14
|
|
.prologue 1
|
|
mov $14,$27
|
|
cmpeq $27,$31,$23
|
|
bne $23,L.42
|
|
ldq $16,8($14)
|
|
jsr $26,tprint
|
|
ldgp $gp,0($26)
|
|
lda $16,L.44
|
|
ldl $17,($14)
|
|
ldq $18,24($14)
|
|
jsr $26,printf
|
|
ldgp $gp,0($26)
|
|
ldq $16,16($14)
|
|
jsr $26,tprint
|
|
ldgp $gp,0($26)
|
|
L.42:
|
|
mov $31,$0
|
|
L.41:
|
|
ldq $14,0($sp)
|
|
ldq $26,8($sp)
|
|
lda $sp,80($sp)
|
|
ret
|
|
.end tprint
|
|
.globl strcmp
|
|
.text
|
|
.ent strcmp
|
|
strcmp:
|
|
ldgp $gp,0($27)
|
|
lda $sp,-64($sp)
|
|
.frame $sp,64,$26,48
|
|
.prologue 1
|
|
br L.47
|
|
L.46:
|
|
mov $16,$27
|
|
lda $16,1($27)
|
|
ldb $27,($27)
|
|
cmpeq $27,$31,$23
|
|
beq $23,L.49
|
|
mov $31,$0
|
|
br L.45
|
|
L.49:
|
|
lda $17,1($17)
|
|
L.47:
|
|
ldb $27,($16)
|
|
ldb $25,($17)
|
|
cmpeq $27,$25,$23
|
|
bne $23,L.46
|
|
ldb $27,($16)
|
|
cmpeq $27,$31,$23
|
|
beq $23,L.51
|
|
lda $0,-1
|
|
br L.45
|
|
L.51:
|
|
ldb $27,($17)
|
|
cmpeq $27,$31,$23
|
|
beq $23,L.53
|
|
lda $0,1
|
|
br L.45
|
|
L.53:
|
|
ldb $27,($16)
|
|
ldb $25,($17)
|
|
subl $27,$25,$0
|
|
L.45:
|
|
lda $sp,64($sp)
|
|
ret
|
|
.end strcmp
|
|
.globl next
|
|
.comm next,4
|
|
.globl words
|
|
.comm words,64000
|
|
.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
|