Forum: Compiler & IDEs AVR Studio Simulation


von Andreas M. (burns)


Lesenswert?

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);


}

von Andreas M. (burns)


Lesenswert?

OK habe es gefunden

Optimierung auf "-os" stellen dann gehts. war das einzigste was ich 
nicht probiert hatte. :-(

von Kasperle (Gast)


Lesenswert?

#include <avr/io.h>

int main(void)
{

   int test, test1, test2;


   test1 = 5;
   test2 = 3;

   test = test1 + test2;

  while(1)
  {

  }

}

Gruß

von Andreas M. (burns)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

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

von Andreas M. (burns)


Lesenswert?

Das verstehe ich jetzt nicht. Der Compiler kann doch nicht einfach die 
Rechenoperation als sinnlos deklarieren ...???? oder doch weil es nicht 
weiter verwendet wird ...?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Andreas M. (burns)


Lesenswert?

Danke für die Aufklärung :-)

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
Noch kein Account? Hier anmelden.