41 lines
508 B
ArmAsm
41 lines
508 B
ArmAsm
/ switch -- switch on contents of r0
|
|
/
|
|
/
|
|
/ calling sequence --
|
|
/
|
|
/ jsr r5,switch; swtab
|
|
/
|
|
/ r0 is looked up in swtab and if found
|
|
/ control is returned to the corresponding place
|
|
/ if r0 is not found, the next inline instruction is
|
|
/ executed
|
|
/
|
|
/ swtab format --
|
|
/
|
|
/ swtab:
|
|
/ val1; ret1
|
|
/ val2; ret2
|
|
/ ...
|
|
/ valn; retn
|
|
/ ..; 0
|
|
/
|
|
|
|
.globl switch
|
|
switch:
|
|
mov r1,-(sp)
|
|
mov (r5)+,r1
|
|
1:
|
|
cmp r0,(r1)+
|
|
beq 1f
|
|
tst (r1)+
|
|
bne 1b
|
|
2:
|
|
mov (sp)+,r1
|
|
rts r5
|
|
1:
|
|
mov (r1)+,r1
|
|
beq 2b
|
|
mov r1,r5
|
|
br 2b
|
|
|