vault backup: 2025-07-07 19:57:44

This commit is contained in:
fzzinchemical
2025-07-07 19:57:44 +02:00
parent 1638e96536
commit ed7da1341b
14 changed files with 1982 additions and 0 deletions

View File

@@ -0,0 +1,129 @@
## 📘 **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)
---