Files
2025-07-07 19:57:44 +02:00

129 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 📘 **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)
---