Slide 12
Slide 12 text
Indexed Array vs Pointer on M8C
ucMode = g_Channels[uc_Channel].ucMode;
01DC 52FC mov A,[X-4]
01DE 5300 mov [__r1],A
01E0 5000 mov A,0
01E2 08 push A
01E3 5100 mov A,[__r1]
01E5 08 push A
01E6 5000 mov A,0
01E8 08 push A
01E9 5007 mov A,7
01EB 08 push A
01EC 7C0000 xcall __mul16
01EF 38FC add SP,-4
01F1 5F0000 mov [__r1],[__rX]
01F4 5F0000 mov [__r0],[__rY]
01F7 060000 add[__r1],<_g_Channels
01FA 0E0000 adc[__r0],>_g_Channels
01FD 3E00 mvi A,[__r1]
01FF 5403 mov [X+3],A
ucMode = pChannel->ucMode;
01ED 5201 mov A,[X+1]
01EF 5300 mov [__r1],A
01F1 3E00 mvi A,[__r1]
01F3 5405 mov [X+5],A
Does the same thing
Saves 29 bytes of memory AND a
call to a 16 bit multiplication routine!
Pointer version will be at least 4x
faster to execute as well, maybe 10x
Most compilers not this bad – but
you do find some!