# ARM Toolchain
![image_296.png](image_296.png)

## Targets
### Entwicklung auf dem Device
- Native Toolchain
- Benötigt ein OS

### Cross Entwicklung
- Compiler auf dem PC übersetzt für Hardware für die Zielplattform

### Entwicklung im Emulator auf dem PC
- Compiler auf dem PC übersetzt für Hardware, ausgeführt im Simulator
- Wenn Hardware nicht verfügbar oder Entwicklung zeitaufwändig
- Insight, QEmu

### Bare Metal
- Für Mikroprozessor ohe BS

### Betriebssysteme
- Linux
- Embedded Windows
- Realtime OS


## Toolchain für das Praktikum
![image_297.png](image_297.png)

## GNU ARM Assembler
- ![image_298.png](image_298.png)
  - rn = Registername


### Assembler-Direktiven
- können Übersetzungsvorgang steuern
- können Speicherbereiche für das Programm reservieren
  - ![image_300.png](image_300.png)
- können Datenstrukturen für das Programm anlegen und initialisieren
- ![image_299.png](image_299.png)


### Pseudobefehle
- Befehle, die es in der Maschinensprache nicht gibt, aber häufig gebraucht werden
- Assembler übersetzt diese in eine geeignete Sequenz von "echten" Assemblerbefehlen
- Beispiel:
  - ![image_301.png](image_301.png)
- 

