Forum: Compiler & IDEs Linker-Problem


von Mathias (Gast)


Lesenswert?

Hallo!

Programmiere gerade mit dem Pollin-Evalboard einen ATMEGA168-20PU.
Dazu nutze ich das AVRStudio4 und Ponyprog.

Auf der Suche nach fehlern habe ich mein Programm gerade im AVRStudio 
simuliert.

Dabei ist mir aufgefallen das im Disassembler der Programmcode sehr 
komisch angeordnet war.

So sind gewisse Zeilen die nur bedingt ausgeführt werden zwischen 
Initialisierungsbefehle gerutscht.

Wie kommt sowas? Wie kann man es abstellen?

Außerdem wird an einer Stelle durch das Verwenden der strcat()-Funktion 
aus der String.h eine unbeteiligte Variable manipuliert.

Wie kommt sowas? Wie kann man es abstelle`n?


Vielen Dank schonmal.

ciao
Mathias

von Oliver (Gast)


Lesenswert?

>Wie kommt sowas? Wie kann man es abstellen?

Optimierung eingschaltet?

>Außerdem wird an einer Stelle durch das Verwenden der strcat()-Funktion
>aus der String.h eine unbeteiligte Variable manipuliert.

Buffer zu klein bzw. fehlende Null am Ende des/der Strings.

Oliver

von Mathias (Gast)


Lesenswert?

Die Optimierung ist an.
Mir ist auch gerade aufgefallen das der Code zu dem der Simulator 
springt anscheinend garnicht ausgeführt wird.
Seltsam finde ich es allerdings trotzdem.

Der Fehler mit der stringfunktion ist behoben. Es war der buffer.

von Karl H. (kbuchegg)


Lesenswert?

Mathias wrote:
> Die Optimierung ist an.
> Mir ist auch gerade aufgefallen das der Code zu dem der Simulator
> springt anscheinend garnicht ausgeführt wird.
> Seltsam finde ich es allerdings trotzdem.

Nicht wirklich :-)
Wenn der Optimierung ganz Arbeit geleistet hat, dann gibt es keine 1:1 
Entsprechung mehr vom Maschinencode mit dem von dir geschriebenen 
C-Programm. Du darfst daher die Anzeige, die der Debugger aus dem C-Code 
ableitet nicht mehr für 100% bare Münze nehmen.

> Der Fehler mit der stringfunktion ist behoben. Es war der buffer.

Wie praktisch immer :-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Mathias wrote:

> Wie kommt sowas? Wie kann man es abstellen?

Die Frage ist: willst du das abstellen?  Optimierung ist ja in
aller Regel das, was der Kunde am Ende von einem Compiler auch
erwartet.

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.