Forum: Compiler & IDEs Von Assembler nach C umsteigen?


von Marco (Gast)


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... ;)

von Stefan Kleinwort (Gast)


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

von ape (Gast)


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.

von peter dannegger (Gast)


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

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.