Ich überlege zur Zeit wie man halbwegs effizient ein switch() Statement in m68k abbildet.
Die Idee ist, dass eine Variable part besagt, welcher case-Fall aufgerufen werden soll.
Im Prinzip geht es um die Realisierung eines Endlichen Automaten...
in C etwa das folgende:
switch(part)
{
case 0:
...
break;
case 1:
...
break;
}
Meine Idee für m68k wäre in etwa wie folgt:
mainloop:
lea jump_table,a0
move.l #part,d0
movea.l 0(a0,d0),a0
jmp (a0)
...
jump_table:
dc.l part1,part2,part3,part4
part1:
...
jmp mainloop
part2:
...
jmp mainloop
part: ds.l 1
Ideen, Anregungen willkommen
ssb