Archiv verlassen und diese Seite im Standarddesign anzeigen : Sdcc
Import-Script
25.12.2003, 21:54
Hi Leute! <BR> <BR>ich begutachte seit einigen tagen den sdcc, weil es mir ganz einfach zu teuer ist nen haufen kohle für keil oder ähnliches auszugeben, wenn ich nen debugger o.ä. eigentlich nicht wirklich brauch... <BR> <BR>hat hier evtl. schon jemand erfahrungen damit gesammelt, oder meinungen von anderen dazu gehört? <BR> <BR>ich komm irgendwie nicht so ganz damit klar :-( <BR> <BR>erst fehlt die funktion "putchar"... die hab ich mir dann noch selbst nachprogrammiert. dann hat "strcmp" anscheinend nen bug (mc bleibt hängen)?? => auch nachprogrammiert => bleibt wieder hängen => unnötige pausenschleife mittenrein programmiert => bleibt nicht mehr hängen => hä??? <BR> <BR>außerdem scheint der compiler wohl nicht so ganz c-konform zu sein... <BR>sachen wie: <BR>for (int i; i < 10; i++) {} <BR>funktionieren nicht, weil initialisierungen (int i) anscheinend nicht mitten im programm sein dürfen??? <BR> <BR>ich bin mehr als verwirrt... hat jemand positivere erfahrungen gemacht? <BR> <BR> <BR>grüße <BR>Thomas <BR> <BR>PS: ich programmier auf nem 80C515 bei 11.059MHz
Import-Script
26.12.2003, 13:52
for (int i; i < 10; i++) {} <BR> <BR>Bin mir ziemlich sicher, daß das nicht ANSI-C konform ist. <BR>Variablen können doch nur direkt nach einer "{" deklariert werden. <BR> <BR>Außerdem kann das gar nicht gehn, da "i" ja nichts zugewiesen wird. <BR> <BR>Stillschweigend anzunehmen, das Variablen der Wert 0 zugewiesen wird geht nur bei globalen Variablen, da vor dem main() der SRAM gelöscht wird. <BR>Ansonsten haben lokale Variablen (Register) einfach den Wert irgendeiner vorhergehenden Operation. <BR> <BR> <BR>Peter <BR> <BR> <BR>
Import-Script
26.12.2003, 14:48
Der SDCC ist ganz schön buggy. In einer größeren Funktion, die ich geschrieben habe, hat er ein Register doppelt verwendet, d.h. oben den Wert einer lokalen Variablen einem Register zugewiesen, dann das Register für etwas anderes verwendet und unten dann angenommen, dass es noch den ursprünglichen Wert hatte. Das war dann nach einem SDCC-Update behoben, aber soweit ich mich erinnere, habe ich wenig später noch einmal einen ähnlichen Fehler gehabt, an dem der SDCC schuld war. Da sucht man sich dann einen Wolf. Also lieber gleich mal in den erzeugten Assemblercode gucken, wenn man meint, der Code müsste doch eigentlich laufen. <BR> <BR>Ansonsten glaube ich, der SDCC optimiert ziemlich gut dafür, dass er Freeware ist. Wichtig: Variablen, die in einer Interrupt-Routine hochgezählt werden, unbedingt als volatile deklarieren, sonst optimiert er z.B. while(timerCnt<100); gnadenlos weg, weil er nicht weiß, dass timerCnt im Hintergrund in der ISR hochgezählt wird. <BR> <BR>Initialisierung von Variablen: <BR>for(int i=0; i<10; i++) ist nur in C++ gültig. In C müssen Variablen am Anfang der Fkt. deklariert werden. <BR>
Import-Script
27.12.2003, 12:33
vielen dank! <BR> <BR>ich denke, ich werde den sdcc wieder in die tonne treten. wie du schon gesagt hast: für freeware ist er ziemlich genial, aber das ist mir einfach zu risikoreich, ihn geschäftlich einzusetzen... <BR>zumal ich noch ein paar andere "kleinigkeiten" gefunden habe, die mich fast in den wahnsinn getrieben hätten ;-) <BR> <BR>die besten erfahrungen hab ich bis jetzt mit keil gemacht. <BR>kennt da jemand die preise, wenn man nur den compiler will? die ide brauch ich nicht unbedingt... die knapp 2000 scheine können wir uns im moment auch noch nicht leisten. <BR> <BR>oder wenn jemand nen ähnlich guten compiler kennt, der bezahlbar ist, dann bin ich "noch" offen für vorschläge. <BR> <BR> <BR>grüße <BR>Thomas
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.