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.

Da diese 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 entwarf man Compiler, die ein in einer gegbenen Programmiersprache verfasstes Programm in unterschiedliche Programme in unterschiedlichen Maschinensprachen übersetzen können.

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 nurnoch hauptsächlich 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 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 noch viele verschiedene Standards, die auch heute noch produziert werden und auf verschiedene Anwendungsfälle spezialisiert sind. Aus diesem Grund ist es immernoch häufig relevant, zu beachten auf welcher Architektur ein Programm compiliert wurde.

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. Dies 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 müssen. Diese Ressourcen werden auf unterschiedlichen Betriebssystemen unterschiedlich bereitgestellt und können deswegen nicht mit dem gleichen Maschinencode behandelt werden.

Javaprogramme haben dieses Problem nicht, da sie zu Bytecode übersetzt werden und eine speziell für eine gegebene Architektur geschriebene virtuelle Maschine (Java Virtual Machine (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 exisitert.