129 lines
3.2 KiB
Markdown
129 lines
3.2 KiB
Markdown
## 📘 **Zusammenfassung: V9 Assembler – Computerarchitektur**
|
||
|
||
---
|
||
|
||
### 🏷 Begriffsklärungen
|
||
|
||
|Begriff|Bedeutung|
|
||
|---|---|
|
||
|**Assembler**|Programm, das Assemblersprache in Maschinensprache übersetzt|
|
||
|**Assemblersprache**|Maschinennahe Programmiersprache mit 1:1-Abbildung auf Maschinenbefehle|
|
||
|**Cross-Assembler**|Läuft auf Host-System, erzeugt Maschinencode für Target-System|
|
||
|**Disassembler**|Rückübersetzt Maschinencode in Assembler (Bezeichner, Kommentare gehen meist verloren)|
|
||
|**Macro-Assembler**|Unterstützt Makros zur Vereinfachung wiederkehrender Befehlssequenzen|
|
||
|**Pseudobefehl**|Befehl für den Assembler, der im Maschinencode aus mehreren echten Instruktionen besteht|
|
||
|
||
---
|
||
|
||
### 🎯 Vorteile von Assemblersprache
|
||
|
||
✅ Direkter Zugriff auf alle Merkmale der Hardware
|
||
✅ Sehr kompakter & schneller Code möglich
|
||
✅ Zeitkritische Routinen exakt steuerbar
|
||
✅ Besseres Verständnis der Prozessorarchitektur
|
||
|
||
---
|
||
|
||
### ⚠️ Nachteile von Assemblersprache
|
||
|
||
❌ Schwierige Programmierung & Wartung
|
||
❌ Zeitaufwändig, keine modernen Programmierkonzepte
|
||
❌ Hardwareabhängig (nicht portabel)
|
||
👉 **Kompromiss:** Inline-Assembler in Hochsprachen für kritische Teile
|
||
|
||
---
|
||
|
||
### 🖥️ MASM (Microsoft Macro Assembler)
|
||
|
||
- Verwendet für x86-Architektur
|
||
|
||
- Teil von Microsoft Visual Studio
|
||
|
||
- **Anweisungsformat:**
|
||
|
||
```
|
||
[Label] Opcode Operanden ; Kommentar
|
||
```
|
||
|
||
- **Pseudobefehle:** Anweisungen an den Assembler, nicht an die CPU
|
||
|
||
|
||
---
|
||
|
||
### 🔁 Makros
|
||
|
||
- **Makrodefinition:** wie eine Inline-Funktion
|
||
|
||
- **Makroaufruf:** Ersetzung durch Makro-Rumpf
|
||
|
||
- **Mit Parametern:** ermöglicht Wiederverwendung mit unterschiedlichen Werten
|
||
|
||
- Vorteil ggü. Prozeduraufruf: kein Overhead durch Call/Return
|
||
|
||
|
||
---
|
||
|
||
### 🏃 Zwei-Pass-Assembler
|
||
|
||
#### 1️⃣ Erster Lauf
|
||
|
||
- Aufbau von Tabellen:
|
||
|
||
- **Symboltabelle:** Marken, Adressen
|
||
|
||
- **Opcode-Tabelle:** Mnemonics & Binärcode
|
||
|
||
- **Pseudobefehlstabelle**
|
||
|
||
- Berechnung der **Instruction Location Counter (ILC)**
|
||
|
||
|
||
#### 2️⃣ Zweiter Lauf
|
||
|
||
- Übersetzung in Maschinencode
|
||
|
||
- Nutzung der Symboltabelle für Adressauflösungen
|
||
|
||
- Erzeugung des Objektprogramms
|
||
|
||
|
||
---
|
||
|
||
### 🔗 Binden (Linking) & Laden
|
||
|
||
- **Linker-Aufgaben:**
|
||
|
||
- Erstellen des virtuellen Adressraums
|
||
|
||
- Auflösen externer Referenzen
|
||
|
||
- Relokation (Anpassung der Speicheradressen)
|
||
|
||
- **Relokationsregister:** Hardware fügt Startadresse hinzu
|
||
|
||
- **Paging:** nur Seitentabelle wird geändert
|
||
|
||
|
||
---
|
||
|
||
### 🌐 Dynamisches Binden (Dynamic Linking)
|
||
|
||
|Plattform|Mechanismus|
|
||
|---|---|
|
||
|**MULTICS**|Linkage-Segment mit Prozedur-Infos, Ausnahmebehandlung beim ersten Aufruf|
|
||
|**Windows**|DLLs (Dynamic Link Libraries), Implicit & Explicit Linking|
|
||
|**Unix**|Shared Libraries (SO-Dateien)|
|
||
|
||
---
|
||
|
||
### 📝 Für die Klausur merken
|
||
|
||
✅ Unterschied Assembler ↔ Compiler
|
||
✅ Vor- & Nachteile Assemblersprache
|
||
✅ Zwei-Pass-Assembler: Ablauf & Tabellen
|
||
✅ Unterschied Pseudobefehl ↔ echter Maschinenbefehl
|
||
✅ Makros: Definition, Aufruf, Parameter
|
||
✅ Linker-Aufgaben: Relokation, externe Referenzen
|
||
✅ Dynamisches Binden: Windows (DLL), Unix (SO)
|
||
|
||
--- |