# ARM ## ARM Prozessoren ### Architektur Revisionen - Unterschiedliche Features - bspw. unterschiedliche Multiplikationsbefehle, Adressierungsarten, ... - jeweils gleiches Befehssatzdesign für jede Revision - aktuell: v7 / v8 ### Profile: Konkrete Prozessor-Implementierungen - Application Profil ['A']: - High Performance - bspw. Mobile, Enterprise - Real Time Profil ['M']: - Embedded Anwendungen - bspw. Automotive, Industriesteuerungen - Microcontroller Profil ['M']: - Mikrocontroller für große Bandbreite an Anforderungen - Anzahl Gatter, Kosten, Realtime, Performance - Aktuell in 2017: - v7 (32Bit): - Cortex A7, Cortex M4, Cortex M0+ - v8 (64Bit): - Cortex A53, Cortex A57 ## Bedeutung des Befehlssatzes (ISA) - Befehlssatz = Instruction Set Architektur - ISA Level - ist das Interface zwischen Soft- und Hardware - definiert die Sprache, die von Soft- & Hardware verstanden werden muss - ![image_291.png](image_291.png) ### ARM Instruction Sets ![image_292.png](image_292.png) - ARM unterstützt derzeit 3 IS - A64 instruction set - eingeführt mit ARMv8-A, um 64 Bit zu unterstützen - A32 instruction set ("ARM") - 32 Bit Befehlsatz in pre-ARMv8-Architekturen - T32 instruction set ("Thumb"/"Thumb2") - komprimierter 16/32 Bit Befehlssatz (gemischt) - in pre-ARMv8-Architekturen ## Coding Standards UAL und APCS ### Unified Assembler Language (UAL) - Coding Standard, der von Compilern für ARM (32bit) und Thumb verstanden wird - Macht Programme möglich, die mit verschiedenen Prozessoren kompatibel sind ### ARM Program Calling Standard (APCS) - Regelt Aufruf von - Unterprogrammen - Verwendung von Registern - ... - Ermöglicht Verwendung von Objektbibliotheken, welche von anderen Compilern übersetzt wurden ## Architektonisches Erbe der ARM-Prozessoren **Verwendete Merkmale** - RISC - Grundlegendes Design-Prinzip: Einfachheit - Load/Store Architektur (Register-Register), von Neumann - 32Bit oder 64Bit (1 Wort) - 1Byte = 8Bit - Byteweise Adressierung des Speichers - Little-Endian und Big-Endian kompatibel - Vorteil für Einsatzzweck als Standard CPU in Kommunikationsgeräten - Standard: Little-Endian - [3-Adressbefehle](Klassifikation.md#3-adress-befehle) (32Bit) oder Thumb **Verworfene Merkmale** - Registerfenster - wird nur bei SPARC Prozessoren genutzt - Delayed Branches - der dem Branch folgende Befehl wird ausgeführt bevor der Sprung durchgeführt wurde - Behandlung von Interrupts und Exceptions schwieriger - Ausführung aller Befehle in einem Taktzyklus - setzt [Harvard](MU6Rechner.md#harvard-architektur) voraus - Kompensation durch verbesserte Adressierungsmodi ## Ein erstes ARM-Programm (GNU) ![image_293.png](image_293.png) ### Wie wird aus einem Programm Maschinencode? ![image_294.png](image_294.png) - Codierungsvorgang immer gleich - kann von Programm (_Assembler_) übernommen werden - Kann weitere Erleichterungen ermöglichen - Bezeichner Konstanten, Daten, Adressen - Reservieren von Speicherbereichen für (Zwischen-)Ergebnisse - Anlegen und Initialisieren von Daten und Datenstrukturen beim Programmstart hinzufügen - ## [ARM Toolchain](arm_toolchain.md) ## [ARM Befehle](arm_befehle.md)