Assuming all the variables are absolute addresses (i.e. not in ZP):
Code: Select all
ldx JumpEntry ; aeXXXX / 4 cycles
lda PointerTableL,X ; bdXXXX / 4 cycles (5 if crosses page)
sta Temp ; 8dXXXX / 4 cycles
lda PointerTableH,X ; bdXXXX / 4 cycles (5 if crosses page)
sta Temp+1 ; 8dXXXX / 4 cycles
jmp [Temp] ; 6cXXXX / 5 cycles
; ===================
; 18 bytes / 25 to 27 cycles
Code: Select all
ldx JumpEntry ; aeXXXX / 4 cycles
lda PointerTableH,X ; bdXXXX / 4 cycles (5 if crosses page)
pha ; 48 / 3 cycles
lda PointerTableL,X ; bdXXXX / 4 cycles (5 if crosses page)
pha ; 48 / 3 cycles
rts ; 60 / 6 cycles
; ===================
; 12 bytes / 24 to 26 cycles
The situation changes if Temp is in ZP. The odds of JumpEntry or PointerTable{H,L} being in ZP is extremely low given the entire point of the routine/goal (this is all going to be in ROM :-) ).