Classe che implementa il concetto di compilatore a due fasi. Al suo interno si trovano tutti i metodi che si occupano di decodificare un'istruzione scritta in linguaggio macchina, rilevare e notificare l'eventuale presenza di errori e salvare l'istruzione in memoria sotto forma di codice binario. Inoltre si occupa di costruire la tabella delle etichette.
Riferimento ad un oggetto di tipo Memoria.Svolge la funzione di memoria indirizzabile utilizzata dal compilatore.
Stringa contenente l'operazione
Contiene l'etichetta dell'istruzione
Contiene il codice mnemonico dell'operazione
Contiene l'etichetta di destinazione
Contiene l'indice del registro di destinazione
Contiene l'indice di uno dei registri sorgente
Contiene l'indice di uno dei registri sorgente
Contiene un valore immediato
Contiene un'indirizzo di memoria
Contiene l'id del simbolo di confronto
Contiene l'id dell'operazione
Contiene tutti i simboli di confronto
Mappa contenente le etichette e l'indirizzo a cui si riferiscono
Cursore dell'istruzione
Puntatore alla memoria
Segnala errore di sintassi
Segnala la presenza di un valore immediato nell'istruzione
Segnala la presenta di un'etichetta per l'istruzione
| Compilatore( |
| ) |
Costruttore della classe Compilatore
| m | Memoria nella quale il compilatore salverà il programma dopo averlo tradotto |
| boolean analyzeInstruction( |
| ) |
Richiama findLabel() e findOperation().Se un'etichetta viene trovata,l'aggiunge alla mappa delle etichette se non è già presente
Se un'istruzione ha un'etichetta la trova e la salva nella variabile "label", altrimenti ritorna "false"
Salva il codice mnemonico dell'operazione nella variabile "op"
Verifica la correttezza dell'operazione ADD e salva gli operandi.Ritorna TRUE se un errore viene trovato
Verifica la correttezza dell'istruzione SUBTRACT e salva gli operandi.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione LOAD e salva gli operandi.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione STORE e salva gli operandi.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione MOVE e salva gli operandi.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione BRANCH e salva gli operandi.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione ORIGIN e la esegue.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione DATAWORD e la esegue.Ritorna "true" se un errore viene trovato
Verifica la correttezza dell'istruzione RESERVE e la esegue.Ritorna "true" se un errore viene trovato
Funzione di smistamento.In base al codice mnemonico , richiama la funzione adatta.Se il codice non viene riconosciuto ritorna un errore.
| boolean compileInstruction( |
| ) |
Compila una singola istruzione.Ritorna un boolean che indica se un errore è stato trovato
| op String | Contiene un'istruzione in linguaggio assembly |
| boolean compile( |
| ) |
Compila in due fasi.Nella prima legge solo etichette e codici mnemonici e riempie la tabella delle etichette.Nella seconda fase legge le istruzioni per intero e le salva in memoria
| program ArrayList<String> | Contiene l'intero programma , sotto forma di lista di stringhe |
| boolean d_compile( |
| ) |
Legge ed esegue le direttive di compilatore
| p_program String [] | Contiene le direttive di compilatore sotto forma di lista di stringhe |
| size int | Valore che indica il numero di direttive |
Funzione che traduce l'istruzione macchina in codice binario e la salva in memoria.
Durante la lettura di un'istruzione viene usata per saltare gli spazi vuoti
Resetta variabili della classe compilatore.Chiamata per ogni istruzione che viene compilata