Good news is, the bit-testing problems seem to be solved (i.e. the state from version 7 has been restored). No more code bloating there.
Bad news is, that all the other points from my list for v8 still hold:
1. Unnecessary RAM bank switching instructions (MOVLB) are being added to the code - a 'phantom variable' effect occurs, i.e. bank switching for a variable that isn't there. Some manual variable placement management may be necessary, if the effect becomes excessive.
2. adding 16-bit to 32-bit variable code increase - the final code is at least twice bigger than in version 7. Similar effect may be observed in adding/subtracting 32-bit variables.
Same program as before was used to demonstrate the above issues:
Code: Select all
program testv8;
var b1:byte; absolute $380;
b2:byte;
b3:byte; absolute $F00;
w2:word;
l1:longint;
BEGIN
b1.2:=1;
if PORTB.7=1 then w2:=1;
if w2>16 then b2.1:=0 else b2.1:=1; // three RAM bank switching 'MOVLB 3' instructions
// added without purpose - following b1 variable that isn't even used here
b3:=2;
l1:=l1+w2; // leads to twice bigger code than in v7
// watch out - using l1:=w2+l1 produces 3 times bigger code!
// and mathmaticians say that the summing order is not important...
END.
3. Find In Files works only with 'Whole words' option checked.
4. Simple operations on strings, like st=st+"ef" do not work correctly (strcat2 called with wrong parameters' list) and may produce undesirable effects, like overwriting part of RAM.