Pass1 och Pass2 är två pass av en två-pass assembler, ett datorprogram som används i systemprogramvara för att översätta assemblerspråk till maskinkod. Här är en jämförelse och kontrast mellan de två:
1. Syfte:
- Pass1 (Symbol Table Generation): Syftet med Pass1 är att skanna hela assemblerprogrammet och skapa en symboltabell, som innehåller adresserna och attributen (typ, omfattning) för alla symboler (t.ex. variabler, etiketter) som definieras i programmet.
- Pass2 (kodgenerering): Syftet med Pass2 är att faktiskt generera maskinkodinstruktionerna baserat på symboltabellen skapad i Pass1 och instruktionerna som specificeras i monteringsprogrammet.
2. Utförda funktioner:
- Pass1:
- Läser och analyserar varje påstående i monteringsprogrammet rad för rad.
- Identifierar och lagrar symboler i symboltabellen.
- Tilldelar minnesadresser till varje symbol.
- Utför syntax och lexikal analys, upptäcker eventuella syntaxfel eller odefinierade symboler.
- Pass2:
- Använder symboltabellen som genereras av Pass1 för att lösa symboliska referenser.
- Genererar de faktiska maskinkodinstruktionerna som motsvarar varje monteringsinstruktion.
- Utför slutlig felkontroll för att verifiera att alla symboler har definierats och använts korrekt.
3. Utdata:
- Pass1: Utdata från Pass1 är symboltabellen, som används av Pass2 för kodgenerering.
- Pass2: Utdata från Pass2 är det körbara maskinkodprogrammet. Detta program kan laddas direkt i minnet och köras av CPU:n.
Sammanfattningsvis fokuserar Pass1 av en systemprogramvara assembler på att skapa symboltabellen och analysera monteringsprogrammet för fel, medan Pass2 använder denna symboltabell för att generera motsvarande maskinkodinstruktioner och producera det slutliga körbara programmet.