>> WTF is going on with the Hi-Tech compiler that ships with MPLAB.... It used to be that one was taught to have their compiler output "standard format intermediate code" (usually triple operand things that matched no real machines at all: "operation source1, source2 ==> destination".) Then, "later", one would write a code generator that would optimize that in ways specific to a destination CPU. (actually, I guess you get at least three chances to optimize; you can optimized the intermediate code, optimize the generation of real code, and then optimize the resulting machine code.) The Hi-tech compiler *is* (was?) multi-target, so it probably has some sort of common back-end and does something very like this sort of code generation. I wasn't impressed, back when I was taught this. :-( I'm not impressed now, when it sort-of looks like Hi-tech has implemented their free compiler by replacing the code generator with something that is at best trivial and perhaps intentionally bad... > 365: irrxsum1+=irbyte1; > 115 087A MOVF 0x7a, W > 116 00C3 MOVWF 0x43 > 117 0843 MOVF 0x43, W > 118 07F4 ADDWF 0x74, F > > Should be 2 instructions This matches up well with "add irrxsum1, irbyte1 ==> irrxsum1 ? Also don't forget that C expressions like the source code here are defined to "return" a value, so it's not beyond reasonableness that completely unoptimized code would want to leave the value of each expression calculation in W. > 366: ircnt1=0; > 119 1003 BCF 0x3, 0 > 11A 3000 MOVLW 0 > 11B 1803 BTFSC 0x3, 0 > 11C 3001 MOVLW 0x1 > 11D 00FB MOVWF 0x7b > > This is especially bizarre - should be 1 CLRF instruction Yeah. Perhaps the compiler has special code to handle common small constants like zero and one, but without optimization the test stays in the code? I think this was a really bad move on hi-tech's part. It makes them look bad, it makes compilers in general look bad. I applaud (sort of) the attempt at a new way of handling "free" versions of commercial compilers, but I really hope that Microsoft decides that this is a failed experiment and does something else in the future. BillW -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist