Diskussion:Assembler-Programmierung für x86-Prozessoren/ Einleitung

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Das der Kernel eines Betriebssystems in Assembler geschrieben ist, stimmt IHO nicht. Am Linux-Kernel lässt sich dies am leichtesten belegen, da hier der Source-Code offen liegt. -- Daniel B 12:39, 15. Okt 2005 (UTC)

Treiber werden weitgehend in Maschinensprache geschrieben.[Bearbeiten]

Die Aussage halte ich auch für eher falsch oder ungenau formuliert. Belegen kann ich es aber nicht. Siggi 10:57, 14. Feb. 2012 (CET)

Ist schon Richtig. Treiber und Kernel werden vor allem in C geschrieben, nicht in Assembler. Man hat mit C alle notwendigen Werkzeuge in der Hand um maschienennah zu programmieren (mit einem Assembler wesentlich überlegenen Funktionsumfang) und benötigt Assembler selbst dazu erstmal nicht. Allerdings sind die C-Compiler (Übersetzungsprogramme für C) oft in Assembler geschrieben. Gleiches gilt für sehr einfache Programme in rein logischen Echtzeitsteuerungen (z.B. im Maschinenbau), weil dafür gerade der geringe Umfang von Assembler bereits alle Funktionalitäten abdeckt und man keine höhere Programmiersprache wie C benötigt (welche den Programmieraufwand eher erhöhen statt verringern würde). Red Rooster 23:23, 28. Nov. 2012 (CET)

Level der Programmiersprachen[Bearbeiten]

Ich würde die verschiedenen Ebenen der Programmiersprachen feiner und moderner deklarieren:

  • Level 0: Maschinencode (nur Binärzahlen, reiner Prozessorcode)
  • Level 1: Assembler (wörtliche Befehle anstatt von Binärzahlen und minimale Wiederverwertung von Quellcode durch Sprungmarken)
  • Level 2: C (direkte Speicheraddressierung, weniger Einfluß auf den Binärcode, der dem Prozessor übergeben wird aber dafür mächtigere Befehle als bei Assembler wie z.B. Schleifen, Funktionen, etc.)
  • Level 3: Ruby, Python, Visual Basic, C++, Java, PHP, Perl, Lua (keine direkte Speicheraddressierung mehr notwendig und enorm mächtige Funktionen für wiederkehrende Programmieraufgaben, dafür aber auch kaum/kein Einfluß auf Speicheraddressierung und den tatsächlich generierten Befehlscode)

Da C als Programmiersprache immer noch direkte Speicheraddressierung ermöglicht, sind die meisten maschinennahen Programme in C geschrieben (auch und vor allem das Linux-Kernel und Treiber). Man vergibt mit C sozusagen keine Möglichkeit der Assembler-Programmierung (außer der vielleicht marginal höheren Befehls-Effezienz), kann aber alle Vorteile der direkten Addressierung nutzen.

Die höheren Programmiersprachen (und dazu gehört C meiner Meinung nach heute lange nicht mehr) übernehmen die Notwendigkeit der direkten Speicheraddressierung selbst zugunsten einer übersichtlicheren Schreibweise, einfacherer Erlernbarkeit und kleinerer Quellcodemenge. Da höhere Sprachen die Speicheraddressierung selbst übernehmen können allerdings kaum noch maschienennahe Programme wie Kernel oder Treiber mit ihnen programmiert werden. Red Rooster 23:15, 28. Nov. 2012 (CET)