home *** CD-ROM | disk | FTP | other *** search
- f=r5
- g=r4
- .globl ofile
- .globl dogen
- .globl succ
- .globl g1,k
- .globl emit
-
- emit:
- mov f,-(sp)
- add $g1,(sp)
- mov g,r1
- 1: /look for a translation
- cmp (sp),r1
- bge 3f /none at all
- bit -(r1),$100001
- beq 1b
- /move it to end of stak
- mov (r1)+,r0
- 1:
- cmp g,r1
- ble 1f
- mov (r1),-2(r1)
- mov r0,(r1)+
- br 1b
- 1:
- mov ofile,r0
- jsr pc,dogen
- mov g,r1
- 1:
- cmp (sp),r1 /try to find prev value of k
- bge 1f /nothing more in this stack frame
- tst -(r1)
- bge 1b /this isnt a k pointer (negative)
- mov (r1),k(f)
- br 3f
- 1:
- mov f,r0 /go back to prev stack frame
- mov k(r0),k(f)
- 3:
- tst (sp)+
- jmp succ
-