Forum: Compiler & IDEs AVRStudio 4


von Albert L. (kryptman)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe ein Problem mit AVRStudio und weiß nicht ob's Ich bin, ATMEL,
oder GCC.

Im Anhang ist ein simples Program das in einer for-Schleife eine Zahl
mit 8 multipliziert und in einer Variable speichert.  Jetzt habe Ich
beim Debuggen ein Problem entdeckt und zwar das Ich nicht mit 8
multiplizieren kann, und auch keiner anderen Potenz von 2.

Kann mir wer sagen was Ich da falsch mache?

Danke

von Karl heinz B. (heinzi)


Lesenswert?

Verraetst Du uns auch noch, wie wir
'das Ich nicht mit 8
multiplizieren kann, und auch keiner anderen Potenz von 2'
interpretieren sollen? Woran merkst Du das es nicht geht?

von Albert L. (kryptman)


Lesenswert?

Ach so, hätte etwas mehr schreiben sollen.

Im Debugger sehe Ich das sich nur ein Register verändert, und zwar der
Zähler der for-Schleife(in diesem Falle x).  Wenn Ich z.b. mit 7
multipliziere, sehe Ich das Resultat in R0 des simulierten AtMega8.

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Der Compiler wird erkennen, daß der Code völlig überflüssig ist, und y
gleich mit dezimal 80 laden...

von Albert L. (kryptman)


Lesenswert?

Ja, da haste recht.

Das kommt davon wenn man sich nicht so richtig auskennt und gleich
plärrt.

von Irgwer (Gast)


Lesenswert?

Die Variable y (und auch x) liegen im Memory. Schau mal ganz am Ende des
Data-Memory.
Bei der Multiplikation mit 7 benutzt der Compiler den MUL Befehl
welcher das Register 0 verändert. Die Multiplikation mit 8 wird durch
dreimaliges shiften erledigt.

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.