There has been some discussion on the use of C compilers with re-entrant routines. Then mention of heavy stack usage and the word recursive came up. Recursive routines (ones that call themselves) obviously must be re-entrant, but re-entrant routines do not need to be used recursively. The real heavy stack usage comes with recursive routines. The one application that comes to mind for using a recursive routine is printing out a tree or other data structure. While I do agree that a recursive routine does tend to gobble up the stack and is somewhat indeterminant as to how much RAM will be used, the re-entrant routine may not be as hoggish. The compiler I use for the 68HC11 (Whitesmiths) has recursive routines and they are a must for me. If I am in the middle of a math computation (e.g. divide), and an interrupt occurs where the ISR needs to perform the same kind of math computation, the math routine better be re-entrant. But just because those two routines are using the math function at the same time does not mean a large amount of stack space is used. So re-entrant routines are a must in embedded applications where interrupts call routines. Which comes to the bigger subject of using a C compiler for a PIC. I have been coding in C for 15 years and most of my code I write daily is in C. I would LOVE to write C code for a PIC but cannot get over the feeling that I am doing the wrong thing. Believe me, after writing a large application for a 17C44 in assembly language, I really want to use C. Compilers without an available stack tend to use large blocks of RAM and overhead routines to access them as pseudo stack spaces, and I think this is wasteful in a PIC. Most PICs I use have a rather small amount of RAM to start with. The day a PIC has an addressable stack will be when everything changes. Maybe for simple applications where there is sufficient memory, a compiler would be great. But then again, if the application is simple, why not just code it in assembly language? My answer to that would be because I make less mistakes in C and can write code a lot faster. Any other thoughts?