Architektur

Aus EINI
Wechseln zu: Navigation, Suche

Unter einer (Rechner-)Architektur versteht man den Satz an Maschinenbefehlen, die ein Prozessor verstehen und ausführen kann. Dazu gehören unter anderem auch Dinge wie die Anzahl an verfügbaren Registern und die Byte-Reihenfolge.

Compiler

Da diese genannten Eigenschaften eines Prozessors von Hersteller zu Hersteller unterschiedlich sind, muss ein Programm für jede Architektur, auf der es ausgeführt werden soll, neu geschrieben werden. Aus diesem Grund wurden Compiler entworfen, die ein in einer gegebenen Programmiersprache verfasstes Programm in verschiedene Programme in unterschiedlichen Maschinensprachen übersetzen können.

Standards

Während zu Zeiten der 16- und 32-Bit- (die Anzahl an Bits, die ein einzelnes Speicherregister umfasst) Desktoparchitekturen eine gewisse Vielfalt herrschte, gibt es heute hauptsächlich nur noch den sogenannten amd-x86_64-Standard. Dieser wird von den beiden größten Herstellern --- Intel und AMD --- für Desktop-CPUs eingehalten. Somit müssen die meisten Programme für 64-Bit-Prozessoren häufig nur einmal compiliert werden und funktionieren auf vielen verschiedenen Endgeräten.

Bei den Herstellern von Microcontrollern mit 8- 16- und 32-Bit-Architekturen existieren jedoch viele verschiedene Standards, anhand derer auch heute noch Prozessoren produziert werden, die auf verschiedene Anwendungsfälle spezialisiert sind. Aus diesem Grund ist es oftmals immer noch wichtig, zu beachten auf welcher Architektur ein Programm compiliert wurde.

Betriebssysteme

Ebenso ist für die meisten Anwendungsprogramme das unterliegende Betriebssystem relevant. So gibt es für die meisten Programme z.B. eine win-x86_64 und eine linux-x86_64 Version. Das hat mit der Art und Weise zu tun, wie Programme, die nativ (auf Maschinencode und nicht Bytecode) compiliert wurden, mit Systemressourcen (z.B. Standard Ein- und Ausgabe) umgehen. Diese Ressourcen werden auf verschiedenen Betriebssystemen unterschiedlich bereitgestellt und können deswegen nicht mit dem gleichen Maschinencode behandelt werden.

Java

Javaprogramme haben dieses Problem nicht, da sie zu Bytecode übersetzt werden und eine speziell für eine gegebene Architektur geschriebene virtuelle Maschine (JVM) die finale Übersetzung von Java(-bytecode) zu Maschinencode übernimmt. Somit kann ein Javaprogramm auf jeder Architektur ausgeführt werden, für welche eine JVM existiert.