Frage bezüglich selbst geschriebener Funktion itoa()

OP #2065622
Lesenswert?
• ▲
▼
Hallo liebe Formumsmitglieder!

Ich hätte mal eine kleine Frage die ich mir bisher nicht erklären 
konnte.

Testweise habe ich mir die Funktion itoa() selber geschrieben (steht so 
in der Art auch glaube ich hier irgendwo im Forum) und mir anschließend 
in AVR-Simulator die Anzahl der Takte angesehen um eine 4-stelligen 
integer in eine ASCII-Darstellung umzuwandeln.
Nun meine Frage warum braucht die Funktion aus der stdlib wesentlich 
weniger als meine?

Hier meine Funktion:
1
void my_itoa(uint16_t zahl, char* buffer)  {
2
  int8_t k;
3
  buffer[5] = '\0';
4
  for (k=4; k>=0; k--)  {
5
      buffer[k] = (zahl % 10) + '0';
6
      zahl /= 10;
7
      }
8
  }

itoa() braucht dafür 940 Takte, my_itoa() braucht 2092 Takte, also mehr 
als doppelt soviel. Wo liegt hier mein Fehler?

Dankeschön schon mal.

Schöne Grüße,
Schwanzus Longus
#2065628
Lesenswert?
• ▲
▼
@  schwanzus_longus

>itoa() braucht dafür 940 Takte, my_itoa() braucht 2092 Takte, also mehr
>als doppelt soviel. Wo liegt hier mein Fehler?

Möglicherweise ist GCC nicht schlau genug, die Division und 
Modulopoeration nur einmal auzuführen. Schau in das generierte *.lss 
File, dort sieht man das.
Liegt im gleichen Verzeichnis wie dei *.hex File.

MFG
Falk

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.