C oder Assembler was ist besser?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 12 2025  17:12:11      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Umfrage : C oder Assembler was ist besser?
Sie sind nicht eingeloggt ! Nur eingeloggte Benutzer können abstimmen.

Autor
C oder Assembler was ist besser?

    







BID = 565210

JRJ

Gesprächig



Beiträge: 132
Wohnort: Ebbs
 

  


Ich habe mich entschlossen mein Glück mit µC zu versuchen und jetzt stehe ich vor der Frage ob ich in C oder Assembler programmieren sollte?

Wenn du abstimmst schreibe bitte noch eine Begründung warum du dich für Assembler oder C entschieden hast.

_________________
Wer in meinem Text Rechtschreibfehler findet darf sie behalten!

BID = 565219

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Besser oder schlechter in diesem Sinn gibt es nicht.
Viel entscheidender ist, wie der Programmierer mit diesen Werkzeugen umzugehen versteht.


Umfangreiche Programme wird man i.d.R. in einer Hochsprache wie C schreiben, während Assemblerprogramme meist kleiner sind und oft auch schneller laufen.
Die beiden letzten Punkte können darüber entscheiden, ob ein Projekt mit einem gegebenen Prozessor realisierbar ist oder nicht.

Idealerweise beherrscht der Programmierer beide Sprachen und kann dann ein in Hochsprache geschriebenes Programm auf Assemblerebene optimieren.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 565235

JRJ

Gesprächig



Beiträge: 132
Wohnort: Ebbs

Ist dann Assambler leichter zu lernen?


_________________
Wer in meinem Text Rechtschreibfehler findet darf sie behalten!

BID = 565244

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Vermutlich.
Um einen Mikrocontroller sinnvoll einzusetzen, musst du dich ja ohnehin mit dessen Innenleben wie Timern, EPROMs, AD-Wandlern etc. befassen.
Die Beispiele zu deren Bedienung sind in den zugehörigen Datenblättern und and Applikationsschriften meist als Programmfragmente in Assembler angegeben.

In Assembler programmierst du eben sehr nah an der Maschine, während Hochsprachenprogramme tendenziell hardwareunabhängig sind.


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 565261

JRJ

Gesprächig



Beiträge: 132
Wohnort: Ebbs

Dann werde ich assambler lernen.
Danke für die info.

_________________
Wer in meinem Text Rechtschreibfehler findet darf sie behalten!

BID = 565267

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Vorher solltest du dir aber überlegen, mit welchem µC du spielen willst.

Die Assembler der verschiedenen Fabrikate sind einigermassen unterschiedlich, da sie ja im Prinzip lediglich eine lesbare Form der Maschinenbefehle repräsentieren und diese widerspiegeln nun einmal die Rechnerarchitektur.
Beispielsweise kann der Befehl ein Byte von einer Speicherstelle zu einer anderen zu bewegen herstellerabhängig MOV (von "move") und mal LD (von "load") heissen.

Auch ist bei der Schreibweise der Befehle manchmal Quelle und Ziel vertauscht.
Bei einem Befehl "LD R1,R2" z.B. ist nicht von vornherein klar, ob R1 die Quelle oder das Ziel der Daten ist. Manche Hersteller bevorzugen diese, andere jene Sicht der Dinge.


Und schreib bitte "Assembler" in Zukunft richtig.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 565273

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

ich hab' mich für C entschieden ...
.... weil ich's schon konnte.
Zwar von anderen Plattformen her, aber die Syntax und das allgemeine Handling waren mir schon vertraut.
Was Du lernen solltest bleibt bei Dir - asm ist sicherlich spezieller, schneller und schlanker, C universeller.
Was Du bevorzugst, hängt u.a. auch von der weiteren Entwicklung Deiner Softwareambitionen ab: Willst Du auf andere µC Plattformen umsteigen, so hilft Dir ein Wissen von PIC-Befehlen recht wenig bei Atmel µC, wogegen Du (bei geschickter Codierung) einige Routinen in C durchaus auf beiden Plattformen nutzen kannnst.


_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

[ Diese Nachricht wurde geändert von: hajos118 am 18 Nov 2008 15:54 ]

BID = 565309

Racingsascha

Schreibmaschine



Beiträge: 2247
Wohnort: Gundelsheim
ICQ Status  

Ich habe für Assembler gestimmt, da es einfach hardwarenäher und für mich einfacher zu lernen war. Ich kenne zwar mittlerweile rudimentäre Elemente von C (von Java, machen wir in Informatik), aber wirklich wohl fühl ich mich nicht damit. Das Zeug was wir so programmieren ist zwar ziemlich easy (kennt jemand den Hamster-Simulator?), aber "richtige" Programme damit zu schreiben wäre mir zu komplex.

_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.

BID = 565364

BjörnB

Stammposter

Beiträge: 242
Wohnort: Dortmund

Hallo,

das ist eine schwierige Frage, mit Assembler lernt man sehr gut den Aufbau des Controllers kennen und kann so seine Programme optimal anpassen. Bei größeren Programmen wird es mit Assembler aber schnell unübersichtlich, außerdem lassen sich Programmteile und -routinen in C leichter in weiteren Programmen wiederverwenden, so dass man nicht jedes Mal das Rad neu erfinden muss.

Ich persönlich habe mit Assembler für AVR angefangen, bin aber nach einer Weile aus obigen Gründen auf C umgestiegen. Ich würde Dir empfehlen, Dich erstmal mit dem Datenblatt des Controllers zu beschäftigen und vielleicht das ein oder andere kleine Programm in Assembler zu schreiben, z.B. eine LED mit einem Timer blinken lassen, Daten per RS232 zu empfangen und auf einigen LEDs auszugeben etc. Die Bezeichnungen der einzelnen Steuerregister für Timer und Schnittstellen etc. wirst Du schließlich auch in C kennen müssen. Danach würde ich mich aber verstärkt auf C konzentrieren, da die Sprache hardwareunabhängig ist und sie Dir früher oder später an vielleicht ganz anderer Stelle wieder begegnen wird.

Was den oft angesprochenen Geschwindigkeitsvorteil von Assembler angeht: Ein guter C-Compiler wie der AVR-GCC für die AVR-Mikrocontroller erzeugt von sich aus schon recht guten Code, den man oftmals in Assembler nicht viel besser hinbekommen würde. Wenn man beide Sprachen kann, kann man im Zweifelsfall immer noch zeitkritische Abläufe als Inline-Assembler innerhalb von C programmieren.

Schöne Grüße,
Björn

BID = 565484

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz

Ich habe für C gestimmt.

Als ich mit Microcontrollern angefangen habe wollte ich möglichst schnell etwas relativ komplexes funktionierendes bauen.

Mit Assembler habe ich es anfänglich auch versucht, aber nicht so viel Freude gefunden. Irgendwie ist ein Assemblercode für mich unverständliches Kauderwelsch. Man kann damit sicher das letzte aus dem Controller herausholen und auch die ganz genaue Arbeitsweise lernen, aber mit C bekommt man ein komplexeres Programm viel einfacher zusammen. Das Problem mit der Verarbeitungsgeschwindigkeit, oder zuviel Speicher verbrauchen, ist in den meisten Anwendungen nicht so relevant. Wenn man in C vernünftig programmiert wird das auch sehr effizient. Zudem kann man auch mal wenn es nötig ist auf Gleitkomma-Arithmetik zurückgreifen (einigen hier wird es nur beim Gedanken daran schon die Nackenhaare hochstellen, einem armen 8-bit Prozzi sowas zuzumuten ). Assembler kann man später immer noch lernen um um die letzten Taktzyklen und Bytes zu kämpfen, sollte es dann nötig sein.

BID = 565496

BlackLight

Inventar

Beiträge: 5452

Alle ASM-Liebhaber mal bitte wegschauen:

Zitat : perl hat am 18 Nov 2008 13:21 geschrieben :

... während Assemblerprogramme meist kleiner sind und oft auch schneller laufen.
Naja, im Industrieeinsatz/Massenprodukten mag das "zählen", aber im Heimgebrauch?
Bei AVR ist C doch noch so hardwarenah wie ASM - das mit den Programmbeispielen in C stimmt bei AVR imho auch nicht.

Zu den Quote, da nehme ich lieber C und kaufe dafür einen schnelleren Quarz oder den größeren Bruder des zu langsamen/kleinen µC.

Die Mehrkosten von 5 Cent stehen in keinem Verhältnis der Arbeitszeit bei C vs. ASM, wenn es um größere Sachen geht.

P.S.
Ok, z.B. der ATMEGA640 lässt sich etwas schwerer löten, aber selbst der hat noch einige größere Brüder. Aber 64KiB sinnvoll in ASM vollkriegen will ich mal sehen - das Geheule wenn dann mal jemand anderes das noch verstehen soll lieber nicht.

BID = 565498

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg


Zitat :
photonic hat am 19 Nov 2008 00:51 geschrieben :

Irgendwie ist ein Assemblercode für mich unverständliches Kauderwelsch.

So geht mir das mit C.

Ich setze PICs meist in überschaubaren Digital/Analogschaltungen ein und die Programme sind schnell geschrieben.

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 565742

Rambodischien

Schreibmaschine

Beiträge: 1341
Wohnort: Österreich

In der Schule haben wir nur wenig mit C-Programmiert.

Für mein Abschlussprojekt habe ich jedoch durch dieses Forum sehr viel Unterstützung bekommen und habe ich mich weitergebildet.

Ich weiß nicht wie schwer es ist Assembler zu lernen, ich habe nur in C programmiert und das klappt ziemlich gut.



_________________
Mfg Rambodischien

BID = 565800

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

Meine (unmassgeblichen) Bemerkungen zu Assembler:
Angefangen hab' ich ja wirklich mit Assembler (auf'm 6502 ... wem sagt Apple][ noch was?), dann in's Studium und wieder Asm (PDP11 - aber komplett anders als der 6502 asm).
Kaum war ich fertig damit, hab ich einen Entwicklerjob ergattert, wobei ich (natürlich) auch in Asm zu Programmieren hatte (allerdings ein 6809 Asm, wieder anders). Inzwischen wurden PC's en vogue, also privat dann auf die 80x86 stürzen ... und damit auch ein Grafiktreiber auf der herkules Karte anständig flutscht, natürlich in Assembler (aber wieder ganz anders als alles vorhergehende) programmiert.

Dann gab's die ersten bezahlbaren C-Compiler und seitdem
ASSEMBLER!!!!

Nur so, zum Nachdenken!

Edit: Ich vergaß: Zwischendrin gab's noch ein paar Atari520/1040, aber die hab' ich gleich in C programmiert....

_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

[ Diese Nachricht wurde geändert von: hajos118 am 20 Nov 2008  9:25 ]

BID = 565887

JRJ

Gesprächig



Beiträge: 132
Wohnort: Ebbs

Ich habe mir gester bei sprachen einmal genauer angeschaut und habe mich für assembler von Microchip entschieden.
Ich habe auch einen guten Link zu Assembler gefunden. Link


Zitat :
mit C bekommt man ein komplexeres Programm viel einfacher zusammen

Ich möcht das als hobby machen deshalb habe ich nicht vor sehr komplexe Programme zu schreiben.



_________________
Wer in meinem Text Rechtschreibfehler findet darf sie behalten!


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 6 Beiträge verfasst
© x sparkkelsputz        Besucher : 187991882   Heute : 11111    Gestern : 11123    Online : 278        28.12.2025    17:12
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.052875995636