144 lines
1.6 KiB
ArmAsm
144 lines
1.6 KiB
ArmAsm
/
|
|
/
|
|
|
|
/ f33 -- do, etal
|
|
|
|
.globl sdo
|
|
.globl dobeg
|
|
.globl doend
|
|
|
|
.globl getlab
|
|
.globl e2
|
|
.globl error
|
|
.globl lvalue
|
|
.globl rvalue
|
|
.globl code
|
|
.globl convrt
|
|
.globl dou
|
|
.globl dotabp
|
|
.globl edotab
|
|
.globl dotab
|
|
|
|
sdo:
|
|
jsr r5,getlab
|
|
br 9f
|
|
jsr r5,dobeg
|
|
cmp r0,$40.
|
|
bne 9f
|
|
rts r5
|
|
|
|
7:
|
|
tst (sp)+
|
|
8:
|
|
tst (sp)+
|
|
9:
|
|
jsr r5,error; 42.
|
|
rts r5
|
|
|
|
dobeg:
|
|
mov dotabp,r2
|
|
cmp r2,$edotab
|
|
blo 1f
|
|
jsr r5,error; 44.
|
|
rts r5
|
|
1:
|
|
mov dou,dotab(r2)
|
|
inc dou
|
|
mov r0,dotab+2(r2)
|
|
add $4,dotabp
|
|
jsr r5,e2
|
|
cmp r0,$38. / =
|
|
bne 9b
|
|
mov r2,-(sp)
|
|
jsr r5,lvalue
|
|
mov r3,-(sp)
|
|
bic $!7,r3
|
|
cmp r3,$1 / integer
|
|
bne 7b
|
|
jsr r5,e2
|
|
cmp r0,$36. / ,
|
|
bne 7b
|
|
jsr r5,rvalue
|
|
mov (sp),r2
|
|
jsr r5,convrt
|
|
mov (sp),r3
|
|
clrb r3
|
|
swab r3
|
|
jsr r5,code
|
|
< gas%d\n goto; 2f\n\0>; .even
|
|
r3
|
|
mov dotabp,r2
|
|
mov dotab-4(r2),r0
|
|
jsr r5,code
|
|
<t%d:\n\0>; .even
|
|
r0
|
|
mov (sp)+,r3
|
|
mov (sp)+,r2
|
|
mov r0,-(sp)
|
|
mov r3,-(sp)
|
|
jsr r5,lvalue
|
|
jsr r5,e2
|
|
mov r0,-(sp)
|
|
jsr r5,rvalue
|
|
mov 2(sp),r2
|
|
jsr r5,convrt
|
|
cmp (sp)+,$36. / ,
|
|
bne 1f
|
|
jsr r5,e2
|
|
mov r0,-(sp)
|
|
jsr r5,rvalue
|
|
mov 2(sp),r2
|
|
jsr r5,convrt
|
|
mov (sp)+,r0
|
|
jsr r5,code
|
|
< do2\0>; .even
|
|
br 2f
|
|
1:
|
|
jsr r5,code
|
|
< do1\0>; .even
|
|
2:
|
|
mov (sp)+,r3
|
|
clrb r3
|
|
swab r3
|
|
mov (sp)+,r2
|
|
jsr r5,code
|
|
<%d; o%d\n2:\n\0>; .even
|
|
r3
|
|
r2
|
|
rts r5
|
|
|
|
doend:
|
|
tst r0
|
|
bne 1f
|
|
jsr pc,gen
|
|
rts r5
|
|
1:
|
|
clr r2
|
|
1:
|
|
cmp r2,dotabp
|
|
bhis 1f
|
|
add $4,r2
|
|
cmp r0,dotab-2(r2)
|
|
bne 1b
|
|
jsr pc,gen
|
|
br doend
|
|
1:
|
|
rts r5
|
|
|
|
gen:
|
|
mov r0,-(sp)
|
|
mov dotabp,r2
|
|
cmp r0,dotab-2(r2)
|
|
beq 1f
|
|
jsr r5,error; 43.
|
|
1:
|
|
mov dotab-4(r2),r0
|
|
sub $4,dotabp
|
|
jsr r5,code
|
|
< goto; t%d\no%d:\n\0>; .even
|
|
r0
|
|
r0
|
|
mov (sp)+,r0
|
|
rts pc
|
|
|