Maschinencode


Maschinencode ist die „Sprache“ als Computer , oder genauer gesagt: die Computer – CPU , verstehen. Ein Computerprogramm , um auf einem Computer ausgeführt werden, wie Maschinencode , ausführbar durch den Maschinencode umgewandelt oder in Maschinencode zu handeln.

Diese „Sprache“ ist im Grunde eine Tabelle, die eine kleine, einfache „Aktion“ auf unterschiedliche Binärzahlen verbindet. Ein Programm in Maschinencode aus einer Reihe von Anweisungen in Form von Binärzahlen in einer bestimmten Reihenfolge besteht, liest die CPU einen nach der anderen, und führt die Aktion mit jedem von ihnen verbunden ist.

Die Tabelle von Zahlen und Anweisungen , wie bekannt Befehlssatz der CPU. Verschiedene Typen von CPUs unterschiedliche Richtungen aufweist; gleiche Aktion (z. B. um zwei Zahlen zusammen) wird häufig auf unterschiedliche Binärzahlen mit unterschiedlichen CPUs und einer CPU kann Anweisungen in seinem Befehlssatz hat , verbunden werden, die in einer anderen Art von CPU nicht existieren.

Neben dem Binärwert wird jedem ein Befehl zugeordnet Opcode , die bei Menschen ein symbolischer Name der Anweisung für den Gebrauch ist. Ein Beispiel für einen Opcode könnte MOV sein , Daten zwischen zwei Orten in der Maschine zu bewegen. Das gleiche Opcode kann mehrere binäre Befehle abdecken, zum Beispiel. zwischen zwei Punkten in dem Laden bewegt wird , die sich zwischen zwei Registern und zwischen den Registern und Speicher zu bewegen. Der Binärcode kann aus einer Anzahl von Bits plus Bits , die die Operanden für den Befehl, zum Beispiel. eine Adresse, ein Register oder ein Literal (Konstante). Opkoderne ist fast immer auf einer Form der Basis Englisch.

Computer Architecture

Ursprünglich ein Programm für einen bestimmten Computer geschrieben. Wenn das Programm auf einem anderen Rechner läuft, sollte es auf die andere Maschine wieder geschrieben wieder oder übersetzt werden. Sie begannen , Computer mit einer einzigen Architektur zu bauen, dh die gleichen Daten und den gleichen Befehlssatz . Ein Programm für eine Maschine entwickelt wird, kann dann automatisch auf einem anderen Rechner läuft, der größer oder kleiner ist , wenn sie die gleiche Architektur teilen. Ein Beispiel für solch eine gemeinsame Architektur ist das IBM System / 360 , die viele sehr verschiedene Modelle aufgespannt. Die Architektur wurde fortgesetzt System / 370 und bis zu IBM Mainframes heute. Auch UNIVAC entwickelte früh eine gemeinsame Architektur für seine Maschinen.

CISC und RISC

Es gibt grundsätzlich zwei Möglichkeiten , dass eine CPU seine Befehle verarbeiten kann. In einem, eine sogenannte CISC , Complex Instruction Set Computer, läuft die CPU ein eigenes Programm, ein Mikroprogramm , das eine Anweisung liest, die die verschiedenen Schaltungen in der CPU auf die Anweisung und die Inhalte der verschiedenen Register (nicht immer abhängig aktiviert sichtbar für Programmierer) und liest die nächste Anweisung. Diese Methode ermöglicht es die gleiche Architektur auf unterschiedliche Hardware implementiert wird, mit teuerer Elektronik auf billigere Modellen kann durch das Mikroprogramm simuliert werden. Eine Anweisung kann sehr mächtig sein und auf einmal viele Dinge tun. Auf der anderen Seite kann das Verfahren relativ langsam sein.

In der zweiten, RISC , Reduced Instruction Set Computer ist kein Mikroprogramm. Alle Operationen werden direkt von dem eigenen Stromkreis in der CPU ausgeführt. Es geht sehr schnell, aber erfordert mehr Hardware. Die meisten Befehle können nur eine einfache Sache tun. Der Programmierer muss daher manchmal mehrere schwache Befehle verwenden , um eine Aufgabe auszuführen. Da die meisten heute üblichen Software wurde in einer schriftlichen Hochsprache , eine Last , die nicht der Programmierer ist. Die feineren Details der Maschine wie möglich zu verwenden, um behandelt der Compiler .

Generation von Maschinenbefehlen

Håndassemblering

Einfachstes machen den Programmierer ein håndassemblering seines Programms genannt. Das Programm ist geschrieben Opcodes, die so genannte mnemokoder. Der Programmierer stellt sich diese in einem Handbuch und zeigt stattdessen die binären Codes, eins nach dem anderen, und die Operanden, auch in binärer Form benötigt. Auch die Berechnung der Adressen wird durch den Programmierer getan. Das fertige Programm kann in den Computer auf verschiedene Arten geladen werden. Früher in diesem Beispiel. unter Verwendung einer Anzahl von Kontakten mit der Adresse und den Inhalt einer Zelle im Laden getan.

Montage

Um diese Arbeit zu erleichtern , den symbolischen entwickelt Assembler . Es ist ein kleines Programm , das sich um die Verbreitung von mnemokoder verpflichtet, die Berechnung der Adressen, die binären Codes und möglich zu erzeugen. Erweiterung des Makros .

Übersetzung

In dem sogenannten High-Level – Sprache Programmierer sieht auf die einzelnen Maschinenbefehle selten viel. Stattdessen abstraktere Konzepte wie Datenstrukturen behandelt, Loops / Iterationen, Entscheidungen usw. Diese werden dann von einem umgebauten Compiler in Maschinenbefehle. Diese müssen oft von einem behandelt werden Link , die mehrere unabhängig übersetzt Module und korrekte Adressen verbinden können.

Interpretation

Ein Programm muss nicht in Maschinencode übersetzt werden. Stattdessen interpretiert die Anweisungen in Hochsprache von einem Dolmetscher , eins nach dem anderen unmittelbar vor dem ausgeführt wird. Verschiedene Routinen in dem Interpreter ausgeführt , je nachdem , was benötigt wird. Diese Routinen sind in Maschinencode.

Virtual Machines

Eine andere Möglichkeit , ein übersetztes Programm lassen auf verschiedenen Maschinen laufen, auch wenn sie Architektur nicht teilen, ist die Verwendung eines virtuellen Maschine . Der Übersetzer dann Anweisungen anstelle der richtigen Maschinenbefehle für diese virtuelle Maschine bilden. Es muss dann einen Dolmetscher dieses virtuellen Code schreibt für jede Architektur in der Lage sein , Programme auszuführen. Ein frühes Beispiel ist Bytecode , auch bekannt als der P-Code . Ein aktuelles Beispiel ist der Code, der durch ausgeführt wird , die Java Virtual Machine , JVM . Obwohl dieses System für ausgelegt ist , Java , in einer anderen Sprache geschriebene Programme, die auch von der JVM laufen.