The separate IF/THEN "templates" make it quicker.
When you have multiple AND's/OR's/XORNOT's etc. on the same line, then intermediate variables (T1+) are used to keep track of each "Term".
And T1+ variables are WORDs (LONGs for PBPL).
So while it looks shorter in the code listing, it really takes longer.<hr>
Well, I was trying to keep it straight PBP.
Which is why the previous example only got a "FASTer" rating.
But, if you want the "FASTest", ya gotta drop down to ASM with bank0/system variables.
Of course, someone will probably find a "FASTest.er" way ... I hope.Code:val1 VAR WORD BANK0 SYSTEM val2 VAR WORD BANK0 SYSTEM ASM movf val1+1, W subwf val2+1, W btfss STATUS, Z goto NotEqual movf val1, W subwf val2, W btfss STATUS, Z goto NotEqual L?GOTO _UserRoutine ; val1 = val2 NotEqual ENDASM UserRoutine: ;... yadda yadda ...<hr>
ADDED:
The above can only be used once without modification.
But if you turn it into a Macro, it can be used multiple times, with different variables. (as long as they're in bank0)
hth,Code:val1 VAR WORD BANK0 SYSTEM val2 VAR WORD BANK0 SYSTEM ASM DT_EQUAL macro v1, v2, label local NotEqual movf v1+1, W subwf v2+1, W btfss STATUS, Z goto NotEqual movf v1, W subwf v2, W btfss STATUS, Z goto NotEqual L?GOTO label ; v1 = v2 NotEqual endm ENDASM ;--- usage ------------------------- @ DT_EQUAL val1, val2, _UserRoutine ; IF val1 = val2 THEN UserRoutine UserRoutine: ;... yadda yadda ...


<hr>


Bookmarks