| About 15 years ago I did some PIC16 programming immediately after a lot of C++, so I tried working in a C++ style. The first obstacle was that there was no C++ compiler. So I wrote some very C++ style C: nice little structs with associated functions for mainpulating them, which took a pointer to struct as first argument. The code did not fit in the PIC. It turns out that the PIC16 lacks certain indirect addressing modes, so every access to a structure member from a pointer turns into a long sequence of instructions to do the arithmetic. Oh, and this particular chip only allows you a maximum stack depth of 8, so you have to ration your use of utility functions. The compiler is bad at inlining so macros are prefereable. By the time I had finished it was an extremely C program with no trace of C++ style at all. The situation has got a lot better but there are still limitations which will trip up the unwary. And one day someone's going to point out that they can save $0.50 on every one of a million devices if you use one of these tiny chips with no indirect addressing and limited stack. |