www.mikrocontroller.net

Forum: Compiler & IDEs Codegröße bei mehrmaligem itoa() Gebrauch


Autor: SoLaLa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallöle,
ich hatte neulich mal ein Problem mit der itoa() Funktion.
WinAVR mit AVRstudio
Mega32
Fleury UART
Meßwerte erfassen und mit itoa() über UART ausgeben

Im gesamten Programm 1 bis4 mal itoa() verwendet lag die Codegröße 
zeimlich konstant bei 8-9kB.
Als ich dann ein 5. mal itoa() verwendete betrug die Codegröße 14kB.

Kann das jemand erklären bzw. nachvollziehen?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum nachvollziehen wäre der Code noch hilfreich.

Autor: SoLaLa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hihi,
wie ich in diesem Forum schonmal anmerkte:
"wenn man das Problem erstmal niederschreibt, dann kommt man auch selbst 
auf die Lösung... und müßte dementsprechend nicht die Spezialisten hier 
mit dem Blödsinn konfrontieren :-)"
Ich hatte in dem Code mehrere Zeilen in der Art

lcd_puts(itoa((zeit*6),s,10));
uart_puts(itoa((drehzahl[2]),s,10));

da war das Kompilat etwa 8 bis 9 kB. Aber die eine Zeile die ich noch 
hatte war diese:

lcd_puts(itoa((voltage*28.39),s,10));

das kompilat war dann damit 14kB groß! Aber wie ich jetzt weiß nicht 
wegen dem itoa() sondern wegen dem Fließkommaargument. Nach Umschreiben 
in

lcd_puts(itoa((voltage*2839/100),s,10));

bleibt der Code wieder bei 9kB Größe.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SoLaLa wrote:
> das kompilat war dann damit 14kB groß! Aber wie ich jetzt weiß nicht
> wegen dem itoa() sondern wegen dem Fließkommaargument.

Und wegen der fehlenden optimierten float-Lib "-lm".


Peter

Autor: SoLaLa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dankeschön lieber Peter :-)
nach suchen-lesen-finden-verstehen-unddasganzeinmeinmakefilereinbasteln 
klappt das tatsächlich mit dem -lm

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.