142 lines
1.3 KiB
ArmAsm
142 lines
1.3 KiB
ArmAsm
/
|
|
/
|
|
|
|
/ rh -- simple array l/r values
|
|
|
|
achk = 1 / 1 to check array bounds
|
|
.globl gal1
|
|
.globl gal2
|
|
.globl gal4
|
|
.globl gal8
|
|
.globl gal16
|
|
.globl gar1
|
|
.globl gar2
|
|
.globl gar4
|
|
.globl gar8
|
|
.globl gar16
|
|
|
|
.globl rerr
|
|
|
|
gal1:
|
|
tst (sp)+
|
|
dec (sp)
|
|
br 1f
|
|
|
|
gal2:
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
br 1f
|
|
|
|
gal4:
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
br 1f
|
|
|
|
gal8:
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
br 1f
|
|
|
|
gal16:
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
|
|
1:
|
|
cmp (sp),(r4)+
|
|
.if achk
|
|
bhis 9f
|
|
.endif
|
|
add (r4)+,(sp)
|
|
jmp *(r4)+
|
|
|
|
9:
|
|
jsr r5,rerr; 15.
|
|
4
|
|
|
|
gar1:
|
|
tst (sp)+
|
|
dec (sp)
|
|
cmp (sp),(r4)+
|
|
.if achk
|
|
bhis 9b
|
|
.endif
|
|
add (r4)+,(sp)
|
|
movb *(sp)+,r0
|
|
mov r0,-(sp)
|
|
jmp *(r4)+
|
|
|
|
gar2:
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
cmp (sp),(r4)+
|
|
.if achk
|
|
bhis 9b
|
|
.endif
|
|
add (r4)+,(sp)
|
|
mov *(sp)+,-(sp)
|
|
jmp *(r4)+
|
|
|
|
gar4:
|
|
tst (sp)+
|
|
dec (sp)
|
|
mov (sp)+,r0
|
|
asl r0
|
|
asl r0
|
|
cmp r0,(r4)+
|
|
.if achk
|
|
bhis 9b
|
|
.endif
|
|
add (r4)+,r0
|
|
cmp (r0)+,(r0)+
|
|
mov -(r0),-(sp)
|
|
mov -(r0),-(sp)
|
|
jmp *(r4)+
|
|
|
|
gar8:
|
|
setd
|
|
tst (sp)+
|
|
dec (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
asl (sp)
|
|
cmp (sp),(r4)+
|
|
.if achk
|
|
bhis 9b
|
|
.endif
|
|
add (r4)+,(sp)
|
|
movf *(sp)+,fr0
|
|
movf fr0,-(sp)
|
|
jmp *(r4)+
|
|
|
|
gar16:
|
|
setd
|
|
tst (sp)+
|
|
dec (sp)
|
|
mov (sp)+,r0
|
|
asl r0
|
|
asl r0
|
|
asl r0
|
|
asl r0
|
|
cmp r0,(r4)+
|
|
.if achk
|
|
bhis 9b
|
|
.endif
|
|
add (r4)+,r0
|
|
movf (r0)+,fr0
|
|
movf (r0)+,fr1
|
|
movf fr1,-(sp)
|
|
movf fr0,-(sp)
|
|
jmp *(r4)+
|
|
|