www.mikrocontroller.net

Forum: Compiler & IDEs Linker-Problem


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.