I've not used C on a PIC for a while - thought things were rtunning a bit slowly on a 16F818
project. Looked at some code and was staggered by how badly it was generating code for trivial
operations
A couple of snippets :
313: irtmr1+=bittime2; // bittime 2 is a constant, irtmr1 is a global char
090 300D MOVLW 0xd
091 00F2 MOVWF 0x72
092 0872 MOVF 0x72, W
093 07F8 ADDWF 0x78, F
Four instructions where two would do
314: ircnt1++;
094 3001 MOVLW 0x1
095 00F2 MOVWF 0x72
096 0872 MOVF 0x72, W
097 07FC ADDWF 0x7c, F
Four instructions where one would do.
"Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 52% smaller than in Lite mode."
So does 'Omniscient Code Generation' just mean doing things properly?
I can't help but think that Microchip shipping something as poorly performing as this, even for
free, can't be doing them any favours winning potential customers as it just makes the silicon look
bad.
--
http://www.piclist.com PIC/SX FAQ & list archive
View/change your membership options at
http://mailman.mit.edu/mailman/listinfo/piclist