mikrocontroller.net

Forum: Compiler & IDEs Von Assembler nach C umsteigen?


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute NAcht zusammen g

Da endlich WinAVR bei mir läuft frage ich mich gerade ob der Compiler
wirklich gut ist und ob es sich lohnt von Assembler auf C umzusteigen.

Bieher habe ich AVRs nur in Assembler programmiert weil ich die
Grundlagen hardwarenah lernen wollte. Aber jetzt werden die Ideen und
Projekte komplexer und da bietet sich C ja an (evt. mit
Assemblerroutinen kombiniert wenns zeitkritisch ist).

Aber was taugt der WinAVR? Nehnem wir an ich schreibe ein Programm
einmal in Assembler und einmal in C. Gibt es da ungefähre Anhaltspunkte
inwiefern das C Programm größer und langsamer ist? Oder geht es hier nur
um ein paar Prozenz die genausogut durch guten/schlechten Assemblercode
entstehen können?

Ist es spürbar oder eher nur messbar?
Denn bevor ich mich voll auf C stürze und nachher merke dass die
Programme auf einmal doppelt so groß werden oder Timings nicht mehr
passen... ;)

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kommt immer auf die Programmierer drauf an ... es gibt Leute, die
schaffen mit C kompakteren Code als andere mit Assembler.

Ein gut strukturiertes Programm bringt meistens mehr als die Wahl
Assembler oder C. Und wenn Du C benutzt, hast Du mehr Zeit übrig, um
Dir eine gute Struktur zu überlegen ;-)

Bei kleinen Programmen wird es Dir sicher leicht fallen, den Compiler
bzgl. Speed/Größe mit asm zu schlagen. Je größer Dein Projekt aber
wird, desto unübersichtlicher wird alles, und dann wirst Du in
Assembler irgendwann ineffizienter als der Compiler. Und gerade bei
größeren Projekten spielt z.B. Speicherplatz ja erst eine Rolle.

Ich bin übrigens von WINAVR voll überzeugt, ich habe schon wesentlich
schlechtere kommerzielle Compiler gesehen.

Viele Grüße, Stefan

Autor: ape (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Geschwindigkeitsunterschied zwischen C und ASM ist sicherlich
meßbar, aber die Frage ist an welcher Stelle man überhaupt das wirklich
allerletzte an Performance herausholen muss.
Ins besondere wenn das Programm mit einem Benutzer interargieren muss
ist die Geschwindigkeit relativ egal, die Schnittstelle
Mikrocontroller/Mensch ist immer um Größenordnungen langsamer.

Und wenn man mal irgendwo etwas wirklich zeitkritisches hat, kann man
das ja wie du schon selbser sagtest in asm lösen. Das sollte aber nur
in den seltensten Fällen nötig sein.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der WINAVR ist schon sehr gut, ich nehme ihn auch.

Allerdings hatte ich zuerst den Fehler gemacht, einen AT90S2313
programmieren zu wollen, da ich schon viele Sachen mit dem C51 auf dem
AT89C2051 gemacht hatte (auch mit float).
Das geht nicht, AVR Code benötigt mehr Platz als 8051-Code.

Aber ab dem ATMega8 ist alles paletti, den kann man sehr gut in C
programmieren.
Bei den riesigen 1kB SRAM leiste ich mir sogar oft den Luxus,
Textkonstanten im SRAM zu belassen, da das LPM-Macro doch etwas
umständlich zu handhaben ist.


Peter

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.