.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