Hi,
der Compiler unterstützt z.B. das Flag -genter nicht. Beim NC30 kann
damit die Einsprung / Austrittfunktion für Funktionen festgelegt
werden. Ohne dieses Flag sieht man im Debugger den Call Stack nicht.
Bzw. nur die Funktion in der man gerade ist. Nicht tragisch aber ich
hätte es gern. Soll in einer der nächsten Versionen kommen.
Der zweite Punkt ist ein Problem mit dem Stack(Pointer). Ich kann es
leider nicht genau beschreiben, aber bei einigen Funktinen wird der
Stack nicht korrekt abgebaut. Damit geht der Rücksprung ins Nirvana. An
dem Problem hänge ich schon seit langem. IAR Support ist leider auch
nicht besonders schnell (Responsetime jedesmal ca. 2 Wochen).
Der Rest, was einem noch so auffällt, ist in den IAR faq eigentlich gut
beschrieben. Z. B. der "lvalue"...
Das hier geht nicht:
1 | void f (void *ptr)
|
2 | {
|
3 | ((short *)ptr)++; // error
|
4 | }
|
muss man so schreiben:
1 | void f (void *ptr)
|
2 | {
|
3 | short *temp = ptr;
|
4 | temp++;
|
5 | ptr = temp;
|
6 | }
|
laut ANSI ist das auch ok, aber die erste Variante wäre einfacher...
Lange Rede, kurzer Sinn: Ist ein mächtiges Tool, aber auf den ersten
Blick ist die Renesas HEW mit dem NC30 Compiler besser. Insbesondere
wenn man den irren Preis für den IAR sieht.
Ok soweit?
Gruss
Torsten