c zu lernen oder assembler? und was ist besser dafür geeignet?
gez. nadel
C ist natürlich leichter, da du dafür nicht alle Interna des jeweiligen MCs genau kennen musst (obwohl ein zumindest
fundiertes Grundwissen darüber unverzichtbar ist).
Was sind die Hauptvorteile:
-du brauchst dich nicht um die Variablenlokierung selbst kümmern, das macht der Compiler für dich fehlerfrei,
ebenso Zugriffe auf diese
-viele grundlegende Sachen werden automatisch erledigt (Stack, Speicherlöschen etc), merkst du gar nichts von, es sei
denn, du willst es explizit nicht
-selbst komplexe Datentrukturen sind einfach zu adressieren - gar kein kleiner Vorteil, wenn man bedenkt, das es letztendlich immer in einen linearen Adressraum abgebildet werden muss und dabei verschiedene Datentypen vorkommen (bit,
byte, integer, long, float
-mit C (und jeder anderen Hochsprache auch) kann man direkt rechnen, in Assembler kann der MC erstmal nichts ausser Addieren und Subtrahieren, mit Glück noch einfache Multiplikation und/oder Division. Für alle anderen Rechnungen muss man
eigene Programmteile oder Bibliotheken verwenden. Fremde Bibliotheken bedürfen in Assembler immer eines kritischen Blicks, da es keine genormte Parameterübergabe/Registerverwendung gibt. Externe Bibliotheken in C sind da viel freundlicher, da sie erst zur Compilezeit in Maschinencode übersetzt werden und der ganze Kram konsistent bleibt.
-Assemblerprogramme kannst du nur für den MC verwenden, für den sie geschrieben wurden, Hochsprachenprogramme dagegen können für jeden beliebigen Prozessor mit dem passenden Compiler übersetzt werden. Hardwarespezifische Sachen müssen natürlich trotzdem beachtet werden
-oftmals wird noch immer behauptet, Assemblercode wäre effizienter in Bezug auf Codegrösse, da jede Hochsprache einen gewissen overhead mitschleppt. Stimmt auch nur bedingt und bei sehr kleinen Programmen. EIn guter Compiler kann derart optimieren, dass der Programmierer sein eigenes Programm hinterher nicht mehr erkennt. Dieses Verdichten des Codes ist für Menschen gar nicht so einfach, das Hauptproblem sind dann evtl. weiter Änderungen, die Software wird unwartbar.
Ausserdem sehr zeit- und fehleranfällig.
Also kurz: nimm C, aber versuch trotzdem, den Assemblercode und den inneren Aufbau des MC zu verstehen.
- Re: c oder assembler nadel 24.10.2008 16:43
(0)