Pass1 en Pass2 zijn twee passages van een two-pass assembler, een computerprogramma dat in systeemsoftware wordt gebruikt om assembleertaal in machinecode te vertalen. Hier is een vergelijking en contrast tussen de twee:
1. Doel:
- Pass1 (Symbooltabel genereren): Het doel van Pass1 is om het volledige assemblageprogramma te scannen en een symbooltabel te maken, die de adressen en attributen (type, bereik) bevat van alle symbolen (bijvoorbeeld variabelen, labels) die in het programma zijn gedefinieerd.
- Pass2 (code genereren): Het doel van Pass2 is om de machinecode-instructies daadwerkelijk te genereren op basis van de symbooltabel die in Pass1 is gemaakt en de instructies die zijn gespecificeerd in het assemblageprogramma.
2. Uitgevoerde functies:
- Pass1:
- Leest en analyseert elke instructie van het assemblageprogramma regel voor regel.
- Identificeert en slaat symbolen op in de symbooltabel.
- Wijst geheugenadressen toe aan elk symbool.
- Voert syntaxis- en lexicale analyses uit en detecteert eventuele syntaxisfouten of ongedefinieerde symbolen.
- Pass2:
- Maakt gebruik van de door Pass1 gegenereerde symbooltabel om symbolische verwijzingen op te lossen.
- Genereert de feitelijke machinecode-instructies die overeenkomen met elke assemblage-instructie.
- Voert een laatste foutcontrole uit om te verifiëren dat alle symbolen correct zijn gedefinieerd en gebruikt.
3. Uitvoer:
- Pass1: De uitvoer van Pass1 is de symbooltabel, die door Pass2 wordt gebruikt voor het genereren van code.
- Pass2: De uitvoer van Pass2 is het uitvoerbare machinecodeprogramma. Dit programma kan rechtstreeks in het geheugen worden geladen en door de CPU worden uitgevoerd.
Samenvattend richt Pass1 van een systeemsoftware-assembler zich op het maken van de symbooltabel en het analyseren van het assemblageprogramma op fouten, terwijl Pass2 deze symbooltabel gebruikt om de overeenkomstige machinecode-instructies te genereren en het uiteindelijke uitvoerbare programma te produceren. |