Pass1 og Pass2 er to gennemløb af en to-pass assembler, et computerprogram, der bruges i systemsoftware til at oversætte assemblersprog til maskinkode. Her er en sammenligning og kontrast mellem de to:
1. Formål:
- Pass1 (Symbol Table Generation): Formålet med Pass1 er at scanne hele assemblerprogrammet og skabe en symboltabel, som indeholder adresser og attributter (type, omfang) af alle symboler (f.eks. variable, etiketter) defineret i programmet.
- Pass2 (kodegenerering): Formålet med Pass2 er faktisk at generere maskinkodeinstruktionerne baseret på symboltabellen oprettet i Pass1 og instruktionerne specificeret i montageprogrammet.
2. Udførte funktioner:
- Pass1:
- Læser og analyserer hver opgørelse af samleprogrammet linje for linje.
- Identificerer og gemmer symboler i symboltabellen.
- Tildeler hukommelsesadresser til hvert symbol.
- Udfører syntaks og leksikalsk analyse, registrerer eventuelle syntaksfejl eller udefinerede symboler.
- Pass2:
- Bruger symboltabellen genereret af Pass1 til at løse symbolske referencer.
- Genererer de faktiske maskinkodeinstruktioner svarende til hver monteringsinstruktion.
- Udfører sidste fejlkontrol for at verificere, at alle symboler er blevet defineret og brugt korrekt.
3. Output:
- Pass1: Outputtet af Pass1 er symboltabellen, som bruges af Pass2 til kodegenerering.
- Pass2: Outputtet af Pass2 er det eksekverbare maskinkodeprogram. Dette program kan indlæses direkte i hukommelsen og udføres af CPU'en.
Sammenfattende fokuserer Pass1 af en systemsoftware-assembler på at skabe symboltabellen og analysere assemblerprogrammet for fejl, mens Pass2 bruger denne symboltabel til at generere de tilsvarende maskinkodeinstruktioner og producere det endelige eksekverbare program.