我刚接触68k,我想知道是否可以通过内存中的值调用特定的子例程。
伪代码示例:
X: dc.w 0
routine1:
code
rts
routine2:
more code
rts
在代码中的某处类似:
move.w #2,X
JSR routine(X)
执行例程2,或者move.w #1,X
在例程1之前执行
我不知道,也找不到任何示例,我的猜测是制作一个包含例程的标签,然后使用地址寄存器跳转到特定偏移量,但不知道如何做。
任何帮助都将受到欢迎!
因此,这就是我最终将Peter Corder解决方案与一些外部建议结合起来的方式:
TIMELINE: DC.L __BLOCK_0,__BLOCK_1,__BLOCK_1
DC.L __BLOCK_2,__BLOCK_2
DC.L __BLOCK_2,__BLOCK_3 ... etc
__BLOCK_0:
; SOME CODE
RTS
-在主循环中-
MOVE.W P61_LAST_POS,D5
LEA TIMELINE,A3
MULU.W #4,D5 ; OFFSET IN BYTES
MOVE.L (A3,D5),A4
JSR (A4) ; EXECUTE SUBROUTINE BLOCK#
其中P61_LAST_POS是增量索引,它随时间变化。
这样,通过编辑LUT“ TIMELINE”,我可以控制在任何给定点执行的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句