Hallo, ich setze AVR Studio V4.18 ein auf einem meiner Rechner ein. Habe dazu das WinAVR installiert um das Programm (in C geschrieben) zu simulieren. Beim Compelieren wird auch soweit kein Fehler festgestellt und der gelbe Pfeil steht bei der ersten geschweiften Klammer welche die Mainfunktion eröffnet. Will ich nun mit F11 weiter auf den nächsten Befehl so springt der gelbe Pfeil zum Ende der Mainfunktion (gescheifte Klammer) ohne die Befehle scheinbar abzuarbeiten. Ich habe noch einen anderen Rechner wo AVR Studio V4.10 drauf ist und da läuft es wirklich jeden Befehl nacheinander ab. Was mache ich hier falsch und kann man mir helfen? Ich hatte auch schon mal an der Optimierung rum gespielt aber bisher ohne erfolg im Moment steht es auf -O1 unter den Eigenschaften. Hier auch mal das Programm (nicht nach dem Sinn fragen ist nur zum Test): #include <avr/io.h> int main (void) { int test,test1,test2; test1=5; test2=3; test=test1+test2; return (0); }
OK habe es gefunden Optimierung auf "-os" stellen dann gehts. war das einzigste was ich nicht probiert hatte. :-(
#include <avr/io.h> int main(void) { int test, test1, test2; test1 = 5; test2 = 3; test = test1 + test2; while(1) { } } Gruß
ich habe es mal mit der schleife versucht, das brachte aber nicht den Erfolg das ich nun jeden Befehl einzeln abarbeiten konnte mit der alten Optimierungseinstellung. Danke trotzdem
Der Compiler erkennt (durchaus richtig), daß alles, was du da mit test1, test2 und test3 anstellst, im Endeffekt völlig wirkunsglos ist, und optimiert das dann alles weg. Oliver
Das verstehe ich jetzt nicht. Der Compiler kann doch nicht einfach die Rechenoperation als sinnlos deklarieren ...???? oder doch weil es nicht weiter verwendet wird ...?
Andreas Meissner schrieb: > Das verstehe ich jetzt nicht. Der Compiler kann doch nicht einfach die > Rechenoperation als sinnlos deklarieren ...???? Natürlich kann er. > oder doch weil es nicht > weiter verwendet wird ...? Ganz genau. Wozu etwas ausrechnen, wenn mit dem Ergebnis nichts passiert? Wenn du deine Steuererklärung machst, kannst du natürlich auch eine Tabelle aller Quadratzahlen von 1 bis 1 Million nebenher ausrechnen. Nur interessiert das Finanzamt deine Zusatzaufgabe herzlich wenig. Wenn du daher deine Steuererklärung möglichst schnell hinter dich bringen willst, bist du gut beraten, diese Fleissaufgabe nicht zu machen. Von ausserhalb verhält sich dein µC genau gleich, egal ob er was ausrechnet oder nicht. Nur gehts schneller, wenn er nichts ausrechnet. Der Compiler darf optimieren, wie er lustig ist. Einzige Vorgabe: am beobachtbaren Verhalten des Programms darf sich nichts verändern. Das 'beobachtbare Verhalten' definiert sich aber hauptsächlich dadurch, was auf Ein/Ausgabe-Kanälen passiert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.