1. Scopo:
- Pass1 (Generazione della tabella dei simboli): Lo scopo di Pass1 è quello di scansionare l'intero programma assembly e creare una tabella di simboli, che contiene gli indirizzi e gli attributi (tipo, ambito) di tutti i simboli (ad esempio variabili, etichette) definiti nel programma.
- Pass2 (generazione del codice): Lo scopo di Pass2 è generare effettivamente le istruzioni del codice macchina in base alla tabella dei simboli creata in Pass1 e alle istruzioni specificate nel programma di assemblaggio.
2. Funzioni svolte:
- Passaggio 1:
- Legge e analizza riga per riga ogni istruzione del programma di assemblaggio.
- Identifica e memorizza i simboli nella tabella dei simboli.
- Assegna indirizzi di memoria a ciascun simbolo.
- Esegue l'analisi sintattica e lessicale, rilevando eventuali errori di sintassi o simboli non definiti.
- Passaggio2:
- Utilizza la tabella dei simboli generata da Pass1 per risolvere i riferimenti simbolici.
- Genera le istruzioni del codice macchina effettive corrispondenti a ciascuna istruzione di assemblaggio.
- Esegue il controllo finale degli errori per verificare che tutti i simboli siano stati definiti e utilizzati correttamente.
3. Risultato:
- Passaggio 1: L'output di Pass1 è la tabella dei simboli, utilizzata da Pass2 per la generazione del codice.
- Passaggio2: L'output di Pass2 è il programma eseguibile in codice macchina. Questo programma può essere caricato direttamente in memoria ed eseguito dalla CPU.
In sintesi, Pass1 di un assemblatore di software di sistema si concentra sulla creazione della tabella dei simboli e sull'analisi degli errori del programma di assemblaggio, mentre Pass2 utilizza questa tabella dei simboli per generare le istruzioni del codice macchina corrispondenti e produrre il programma eseguibile finale.
hardware © www.354353.com