Maschinensprache

Maschinencode ist ein in Maschinensprache geschriebenes Computerprogramm. Es verwendet den Befehlssatz einer bestimmten Computerarchitektur. Er ist in der Regel binär geschrieben. Maschinencode ist die unterste Ebene der Software. Andere Programmiersprachen werden in Maschinencode übersetzt, damit der Computer sie ausführen kann.

Eine Anweisung teilt dem Prozess mit, welche Operation durchzuführen ist. Jede Anweisung setzt sich aus einem Opcode (Operationscode) und einem oder mehreren Operanden zusammen. Die Operanden sind in der Regel Speicheradressen oder Daten. Ein Befehlssatz ist eine Liste der für einen Computer verfügbaren Opcodes. Maschinencode ist das, wofür Assemblercode und andere Programmiersprachen kompiliert oder interpretiert werden.

Programm-Ersteller verwandeln Code in eine andere Sprache oder Maschinencode. Maschinencode wird manchmal als nativer Code bezeichnet. Dies wird verwendet, wenn es um Dinge geht, die nur auf einigen Computern funktionieren.

Maschinencode schreiben

Maschinencode kann in verschiedenen Formen geschrieben werden:

  • Verwendung einer Reihe von Schaltern. Dadurch wird eine Sequenz von 1 und 0 erzeugt, wie sie in den Anfängen der Informatik verwendet wurde. Seit den 1970er Jahren wird sie nicht mehr verwendet.
  • Verwendung eines Hex-Editors. Dies ermöglicht die Verwendung von Opcodes anstelle der Nummer des Befehls.
  • Verwendung eines Assemblers. Assemblersprachen sind einfacher als Opcodes. Ihre Syntax ist leichter zu verstehen als Maschinensprache, aber schwieriger als Hochsprachen. Der Assembler übersetzt den Quellcode von sich aus in Maschinencode.
  • Die Verwendung einer High-Level-Programmiersprache ermöglicht Programme, die Code verwenden, der leichter zu lesen und zu schreiben ist. Diese Programme werden in Maschinencode übersetzt. Die Übersetzung kann in vielen Schritten erfolgen. Java-Programme werden zunächst in Bytecode optimiert. Dann wird er bei seiner Verwendung in Maschinensprache übersetzt.
Frontplatte eines frühen Minicomputers, mit Schaltern zur Eingabe von MaschinencodeZoom
Frontplatte eines frühen Minicomputers, mit Schaltern zur Eingabe von Maschinencode

Typische Anweisungen von Maschinencode

Es gibt viele Arten von Anweisungen, die man normalerweise in einem Befehlssatz findet:

  • Arithmetische Operationen: Addition, Subtraktion, Multiplikation, Division.
  • Logische Operationen: Konjunktion, Disjunktion, Negation.
  • Operationen, die auf einzelne Bits wirken: Verschieben von Bits nach links oder rechts.
  • Auf den Speicher wirkende Operationen: Kopieren eines Wertes von einem Register in ein anderes.
  • Operationen, die zwei Werte vergleichen: größer als, kleiner als, gleich.
  • Operationen, die andere Operationen kombinieren: Addieren, Vergleichen und Kopieren, wenn gleich irgendeinem Wert (als eine Operation), Springen zu irgendeinem Punkt im Programm, wenn ein Register Null ist.
  • Operationen, die auf den Programmfluss wirken: Sprung zu irgendeiner Adresse.
  • Operationen, die Datentypen umwandeln: z.B. Umwandlung einer 32-Bit-Ganzzahl in eine 64-Bit-Ganzzahl, Umwandlung einer Fließkommazahl in eine Ganzzahl (durch Abschneiden).

Viele moderne Prozessoren verwenden Mikrocode für einige der Befehle. Komplexere Befehle neigen dazu, ihn zu verwenden. Dies geschieht oft mit CISC-Architekturen.

Anleitungen

Jeder Prozessor oder jede Prozessorfamilie hat seinen eigenen Befehlssatz. Befehle sind Muster von Bits, die verschiedenen Befehlen entsprechen, die an die Maschine gegeben werden können. Somit ist der Befehlssatz spezifisch für eine Klasse von Prozessoren, die (meistens) die gleiche Architektur verwenden.

Neuere Prozessorentwürfe enthalten oft alle Anweisungen eines Vorgängers und können zusätzliche Anweisungen hinzufügen. Manchmal wird durch ein neueres Design die Bedeutung eines Instruktionscodes eingestellt oder verändert (typischerweise, weil er für neue Zwecke benötigt wird), was die Code-Kompatibilität beeinträchtigt; selbst fast vollständig kompatible Prozessoren können für einige Instruktionen ein leicht unterschiedliches Verhalten zeigen, was jedoch selten ein Problem darstellt.

Systeme können sich auch in anderen Details unterscheiden, wie z.B. der Speicheranordnung, den Betriebssystemen oder den Peripheriegeräten. Da ein Programm normalerweise von solchen Faktoren abhängt, werden verschiedene Systeme in der Regel nicht den gleichen Maschinencode ausführen, selbst wenn der gleiche Prozessortyp verwendet wird.

Die meisten Anweisungen haben ein oder mehrere Opcode-Felder. Sie geben den grundlegenden Anweisungstyp an. Andere Felder können den Typ der Operanden, den Adressierungsmodus usw. angeben. Es kann auch spezielle Anweisungen geben, die im Opcode selbst enthalten sind. Diese Anweisungen werden als Unmittelbarer Befehl bezeichnet.

Prozessor-Designs können auf andere Weise unterschiedlich sein. Verschiedene Instruktionen können unterschiedliche Längen haben. Sie können auch die gleiche Länge haben. Wenn alle Anweisungen die gleiche Länge haben, kann dies den Entwurf vereinfachen.

Beispiel

Die MIPS-Architektur hat Anweisungen, die 32 Bit lang sind. Dieser Abschnitt enthält Code-Beispiele. Der allgemeine Anweisungstyp befindet sich im Feld op (Operation). Es sind die höchsten 6 Bits. J-Typ (Sprung) und I-Typ (Sofort) Befehle werden vollständig von op. Befehle vom Typ R (Register) enthalten die Feldfunktion. Sie bestimmt die genaue Operation des Codes. Die in diesen Typen verwendeten Felder sind:

    6       5      5               6 Bits [ op | rs | rt | rd |shamt| funct] R-Typ [ op | rs | rt | Adresse/sofort] I-Typ [ op |         Zieladresse         ] J-Typ

rs, rt und rd bezeichnen Registeroperanden. sh shamt gibt einen Verschiebungsbetrag an. Die Adress- oder Direktfelder enthalten direkt einen Operanden.

Beispiel: Fügen Sie die Register 1 und 2 hinzu. Platzieren Sie das Ergebnis in Register 6. Es ist verschlüsselt:

[ op | rs | rt | rd |shamt| funct]      0      1      2      6      0      32      dezimal 000000 00001 00010 00110 00000 100000    binär

Laden Sie einen Wert in Register 8. Entnehmen Sie ihn aus der Speicherzelle 68 Zellen nach der in Register 3 aufgeführten Stelle:

[ op | rs | rt | adresse/sofort]     35      3      8            68            dezimal 100011 00011 01000 00000 00001 000100    binär

Springen Sie zur Adresse 1024:

[ op |         Zieladresse         ]      2                  1024                dezimal 000010 00000 00000 00000 00000 10000 000000    binär

Verwandte Seiten

  • Binäres Zahlensystem
  • Quantencomputer
  • Befehlssatz
  • Computer mit reduziertem Befehlssatz

Fragen und Antworten

F: Was ist Maschinencode?


A: Maschinencode ist ein in Maschinensprache geschriebenes Computerprogramm, das den Befehlssatz einer bestimmten Computerarchitektur verwendet und in der Regel in Binärform geschrieben ist.

F: Was ist die unterste Ebene von Software?


A: Maschinencode ist die unterste Ebene der Software.

F: Wie werden andere Programmiersprachen von Computern ausgeführt?


A: Andere Programmiersprachen werden in Maschinencode übersetzt, den der Computer ausführen kann.

F: Woraus besteht eine Anweisung im Maschinencode?


A: Eine Anweisung im Maschinencode besteht aus einem Opcode (Operationscode) und einem oder mehreren Operanden. Bei den Operanden handelt es sich in der Regel um Speicheradressen oder Daten.

F: Was ist ein Befehlssatz?


A: Ein Befehlssatz ist eine Liste der für einen Computer verfügbaren Opcodes.

F: Was machen Programmersteller mit Code?


A: Programmersteller wandeln Code in eine andere Sprache oder Maschinencode um.

F: Was ist ein anderer Name für Maschinencode?


A: Maschinencode wird manchmal auch als nativer Code bezeichnet, wenn es um Dinge geht, die nur auf bestimmten Computern funktionieren.

AlegsaOnline.com - 2020 / 2023 - License CC3