Pass1 und Pass2 sind zwei Durchläufe eines Two-Pass-Assemblers, eines Computerprogramms, das in Systemsoftware verwendet wird, um Assemblersprache in Maschinencode zu übersetzen. Hier ist ein Vergleich und Kontrast zwischen den beiden:
1. Zweck:
- Pass1 (Generierung der Symboltabelle): Der Zweck von Pass1 besteht darin, das gesamte Assemblerprogramm zu scannen und eine Symboltabelle zu erstellen, die die Adressen und Attribute (Typ, Umfang) aller im Programm definierten Symbole (z. B. Variablen, Beschriftungen) enthält.
- Pass2 (Codegenerierung): Der Zweck von Pass2 besteht darin, die Maschinencodeanweisungen tatsächlich basierend auf der in Pass1 erstellten Symboltabelle und den im Assemblerprogramm angegebenen Anweisungen zu generieren.
2. Ausgeführte Funktionen:
- Pass1:
- Liest und analysiert jede Anweisung des Assemblerprogramms Zeile für Zeile.
- Identifiziert und speichert Symbole in der Symboltabelle.
- Weist jedem Symbol Speicheradressen zu.
- Führt eine Syntax- und lexikalische Analyse durch und erkennt Syntaxfehler oder undefinierte Symbole.
- Pass2:
– Verwendet die von Pass1 generierte Symboltabelle, um symbolische Referenzen aufzulösen.
- Erzeugt die tatsächlichen Maschinencodeanweisungen, die jeder Montageanweisung entsprechen.
- Führt eine abschließende Fehlerprüfung durch, um zu überprüfen, ob alle Symbole ordnungsgemäß definiert und verwendet wurden.
3. Ausgabe:
- Pass1: Die Ausgabe von Pass1 ist die Symboltabelle, die von Pass2 zur Codegenerierung verwendet wird.
- Pass2: Die Ausgabe von Pass2 ist das ausführbare Maschinencodeprogramm. Dieses Programm kann direkt in den Speicher geladen und von der CPU ausgeführt werden.
Zusammenfassend konzentriert sich Pass1 eines Systemsoftware-Assemblers auf die Erstellung der Symboltabelle und die Analyse des Assemblerprogramms auf Fehler, während Pass2 diese Symboltabelle verwendet, um die entsprechenden Maschinencodeanweisungen zu generieren und das endgültige ausführbare Programm zu erstellen.