## 📘 **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) ---