Zum Inhalt springen

Maschinensprache

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. Januar 2003 um 19:04 Uhr durch HHK (Diskussion | Beiträge) (Hinweis auf 'Assemblersprache'). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Unter Maschinensprache versteht man die (Programmier)-Sprache, die ein Mikroprozessor direkt ausführen kann. Der synonyme Begriff Maschinencode macht deutlich, dass es sich nicht um eine für den Menschen lesbare Sprache handelt.

Unterschiede zu den Hochsprachen:

  • Maschinensprachen bieten nur sehr einfache Befehle
  • Ein Programm kann nur auf genau dem Mikroprozessor ablaufen, für dessen Maschinensprache es programmiert wurde. Diese Einschränkung ist weniger schwerwiegend als es zunächst scheint. 16-Bit-Code der für den mittlerweile 25 Jahre alten 8086 Prozessor programmiert wurde, läuft noch heute auf Pentium-Rechnern. Für 32-Bit-Code, der für 80386 programmiert wurde, gilt dasselbe. Da die Intelmikroprozessor-Architektur einen sehr großen Marktanteil hat (auch andere Firmen wie AMD benutzen sie), sind Maschinensprachprogramme, die für diese Mikroprozessoren geschrieben worden sind, sehr langlebig.

Überblick über die typische Funktionalität einer Maschinensprache:
Die Maschinensprache enthält die direkt vom Prozessor verstandenen Befehle. Das Programmiermodell eines Computers beschreibt die für die Programmierung relevanten Hardware-Details. Typischerweise hat ein Computer einige Register, also Speicher in die 8, 16, 32 oder 64 Bit Daten gespeichert werden können. Der Mikroprozessor kann über den Adressbus und Datenbus seinen angeschlossenen Hauptspeicher, sowie Schnittstellen zu externen Geräten ansprechen.
Die Maschinen-Befehle sind meist der folgenden Art:
Lade eine Zahl von Speicherstelle xxxx in das Register yyyy
Zähle den Inhalt des Registers yyyy um eines hoch
Speichere den Inhalt des Registers yyyy in die Speicherzelle, deren Nummer im Register zzzz steht
Addiere (Subtrahiere, Multipliziere, Dividiere) Register yyyy zum Register zzzz
Setze die Abarbeitung des Programms an der Stelle xyz fort(Sprung)
...

Programmerstellung:
Intern ist jeder Befehl der Maschinensprache durch eine Zahl codiert; eine sinnvolle Folge von solchen Zahlencodes im Hauptspeicher bzw. als Datei gespeichert bildet demnach ein Programm. Es gibt nun verschiedene Arten, solche Programme zu erstellen:

  • Über einen HEX-Editor direkt den Zahlen-Code schreiben. (sehr kryptisch und unpraktisch)
  • Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle in einer einfachen, lesbaren Syntax. Dieser Quelltext wird danach vom Assembler, einer Software, in den Maschinencode konvertiert.
  • Mit einer Hochsprache wird das Programm geschrieben, danach von einem Compiler compiliert und dann gespeichert.
  • Alternativ können Programme in einer Hochsprache auch in einen Zwischenkode übersetzt oder auch direkt durch einen Interpreter abgearbeitet werden.

Manche Architekturen verfügen nicht über Register, die Datenverarbeitung läuft in diesen Fällen in einem Stapel-, einem Variablen-Kontext und dem Hauptspeicher ab.

Siehe auch Assemblersprache (Die Artikel sollten aufeinander abgestimmt werden)