vault backup: 2025-07-07 19:57:44
This commit is contained in:
129
Semester 6/COMARCH/Zusammenfassung/Vorlesung 9.md
Normal file
129
Semester 6/COMARCH/Zusammenfassung/Vorlesung 9.md
Normal 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)
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user