I've only used C18 and SDCC (and I started the thread you mentioned :). C18 is decent, but it either uses broken math (with no integer promotion, which breaks the C standard) or has horrible, awful optimization with integer promotion enabled (it will turn a simple BTFSS into many instructions). SDCC tends to do the right thing more often, though it does have a bug or two every now and then. However, you can usually work around the bugs (you can't really work around C18's stupid optimization, unless you turn off IP, and then you have to change all of your code to deal with that if it doesn't already, and hope that you never have to import some generic C code that doesn't expect to be compiled with a broken compiler). SDCC has pretty fast compilation times. One thing I don't like about SDCC though is that it does a lot of context saving in interrupts (I would like for it to be able to delay the context saving until it is really needed, or have the option of compiling interrupt code with a different register stack to avoid saving anything). If you like fast interrupt code, you're going to have to do some hacking. I had a project that needed some relatively fast interrupt code, so what I did is declare a "naked" interrupt function (aka all bets are off, no context saving at all; in fact it won't even add a "return" for you). Then I used a few lines of assembler to do minimal context saving, and call the main interrupt code. The main code is basically a series of if statements and increments, tests, etc, and I made sure they don't use any compiler registers when compiled (the fact that SDCC doesn't do broken integer promotion helps here - everything was 8 bits wide, so no temp registers were needed). When I need to call code (during slow interrupts) that does a little more work, I do the context saving myself. I'm sure there's better stuff out there, but you can't really beat SDCC's price. For my purposes, it works. Then again, I don't quite use it for commercial purposes (yet). -- Hector Martin (hector@marcansoft.com) Public Key: http://www.marcansoft.com/marcan.asc -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist