diff options
Diffstat (limited to 'code/tools/lcc/alpha/osf/tst/wf1.sbk')
-rw-r--r-- | code/tools/lcc/alpha/osf/tst/wf1.sbk | 400 |
1 files changed, 400 insertions, 0 deletions
diff --git a/code/tools/lcc/alpha/osf/tst/wf1.sbk b/code/tools/lcc/alpha/osf/tst/wf1.sbk new file mode 100644 index 0000000..507b38f --- /dev/null +++ b/code/tools/lcc/alpha/osf/tst/wf1.sbk @@ -0,0 +1,400 @@ +.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 |