Grundlegendes zu Assembler: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
| Zeile 15: | Zeile 15: | ||
Damit wir nun endlich etwas machen können, müssen wir zunächst eine Programmierumgebung einrichten. Wir müssen hier aber für den jeweiligen Raspberry Pi achten und die folgenden Kapitel sind unter dem jeweiligen Raspberry Pi beschrieben. | Damit wir nun endlich etwas machen können, müssen wir zunächst eine Programmierumgebung einrichten. Wir müssen hier aber für den jeweiligen Raspberry Pi achten und die folgenden Kapitel sind unter dem jeweiligen Raspberry Pi beschrieben. | ||
----- | |||
| style="width: | |||
{| style="width: 100%; | |||
| style="width: 33%;" | [[Vorwort|< Zurück (Vorwort)]] | |||
| style="width: 33%; text-align:center;" | [[Hauptseite|< Hauptseite >]] | |||
| style="width: 33%; text-align:right;" | [[Programmierumgebung erstellen (Konsole)|Weiter (Programmierumgebung erstellen (Konsole)) >]] | |||
|} | |} | ||
Aktuelle Version vom 23. August 2024, 10:30 Uhr
Assembler (aus dem Englischen "assemble" → montieren) ist eine Programmiersprache, die auf den spezifischen Befehlsvorrat eines bestimmten Prozessors ausgerichtet ist. Diese Programmiersprache wurde zwischen 1948 und 1950 von Nathaniel Rochester entwickelt und repräsentiert die zweite Generation der Programmierung von Prozessoren. Vorher musste man mit sehr unübersichtlichen Zahlencodes programmieren. Der Assembler-Code ist lesbarer als die Binärcodes der Maschinensprache. Befehle und deren Operatoren werden in Textform dargestellt. Der Assembler wird verwendet, um den Assembler-Code in Maschinensprache umzuwandeln, sodass er für den Prozessor lesbar ist. Inzwischen sind Assemblerprogramme für alle Prozessoren verfügbar.
Eine Weiterentwicklung des einfachen Assemblers ist die Programmierung mit Makros. Hier können bestimmte Abfolgen von Code in einem einzigen Befehl programmiert werden, und der Assembler ersetzt den Befehl durch die entsprechende Codeabfolge. Man kann davon ausgehen, dass ein Assemblerprogramm fast eine 1:1-Kopie der Maschinensprache darstellt. Hochsprachen verwenden meist eine Verallgemeinerung der Befehle, die nicht mehr prozessorabhängig sind. Diese Hochsprachen übersetzen ihren Code oft in eine andere Sprache (meist Assembler) und erzeugen so ausführbaren Code. Hier liegt auch das Problem der Hochsprachen: Da sie allgemeine Befehle verwenden und für viele Betriebsumgebungen funktionieren sollen, muss der Compiler Kompromisse eingehen, die die Effizienz beeinträchtigen können. Allerdings sind viele Compiler sehr gut und nutzen die Möglichkeiten optimal aus, sodass es oft schwer ist, Verbesserungen zu erkennen.
Der ARM-Assembler
Wie der Titel dieses Buches verrät, werden wir uns mit dem ARM-Prozessor und dem ARM-Assembler beschäftigen. Zusätzlich werde ich Programme für den Raspberry Pi 4 und den Raspberry Pi 5 erstellen, um genau auf diesen Assembler einzugehen. Zunächst muss man wissen, was ARM ist. Die ARM-Architektur wurde ursprünglich 1983 vom Computerunternehmen Acorn entwickelt und später von der Firma ARM Limited weiterentwickelt. Die Firma selbst produziert keine eigenen Prozessoren, sondern vergibt Lizenzen an andere Halbleiterunternehmen. Dadurch findet die ARM-Architektur in vielen Prozessoren Verwendung. In Mobilgeräten wird dieser Prozessortyp wegen der geringen Leistungsaufnahme eingesetzt, dazu zählen Mobiltelefone, PDAs und Router. Große Bedeutung hat diese Architektur bei Smartphones, da die meisten Betriebssysteme ARM unterstützen. Auch in tragbaren Spielekonsolen, stationären Unterhaltungselektronikgeräten und der Autoindustrie ist dieser Prozessortyp beliebt. Zudem wird er in IoT-Geräten (Ein-Chip-Systemen) verwendet; das beste Beispiel dafür ist der Raspberry Pi, der einen ARM-Mikroprozessor von Broadcom enthält. Für den Raspberry Pi gibt es inzwischen mehrere Generationen, die verschiedene ARM-Prozessoren verwenden. Eine Übersicht findet sich im Anhang.
Im Kapitel „Raspberry Pi 4“ werden wir uns hauptsächlich mit dem Raspberry Pi 4 beschäftigen, der mit einem Broadcom BCM2711-Prozessor ausgestattet ist. Dieser Prozessor basiert auf der CPU-Familie Cortex-A72 und verwendet die ARMv8-Architektur, die für 64-Bit ausgelegt ist. Er ist jedoch abwärtskompatibel, sodass wir uns auch auf die ARMv7-Architektur beziehen können.
Im Kapitel „Raspberry Pi 5“ werden wir in 64-Bit-Assembler arbeiten. Dieser verwendet den Broadcom BCM2712-Prozessor, der auf Cortex-A76 basiert und die ARMv8.2-A-Architektur nutzt. Aber jetzt genug von diesen Informationen. Wenn ihr mehr wissen wollt, könnt ihr im Internet nahezu unendlich viele Informationen finden.
Damit wir nun endlich etwas machen können, müssen wir zunächst eine Programmierumgebung einrichten. Wir müssen hier aber für den jeweiligen Raspberry Pi achten und die folgenden Kapitel sind unter dem jeweiligen Raspberry Pi beschrieben.
| < Zurück (Vorwort) | < Hauptseite > | Weiter (Programmierumgebung erstellen (Konsole)) > |