Compilatore
Compilatore

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.

Variables
mem
Memoria mem

Riferimento ad un oggetto di tipo Memoria.Svolge la funzione di memoria indirizzabile utilizzata dal compilatore.

instruction
String instruction

Stringa contenente l'operazione

label
String label

Contiene l'etichetta dell'istruzione

op
String op

Contiene il codice mnemonico dell'operazione

destLabel
String destLabel

Contiene l'etichetta di destinazione

r_dest
int r_dest

Contiene l'indice del registro di destinazione

r_src1
int r_src1

Contiene l'indice di uno dei registri sorgente

r_src2
int r_src2

Contiene l'indice di uno dei registri sorgente

val
int val

Contiene un valore immediato

addr
int addr

Contiene un'indirizzo di memoria

comparId
int comparId

Contiene l'id del simbolo di confronto

opId
int opId

Contiene l'id dell'operazione

comparOp
String comparOp

Contiene tutti i simboli di confronto

LabelTable
Map<String,Integer> LabelTable

Mappa contenente le etichette e l'indirizzo a cui si riferiscono

cursor
int cursor

Cursore dell'istruzione

memPointer
int memPointer

Puntatore alla memoria

error
boolean error

Segnala errore di sintassi

isImmediate
boolean isImmediate

Segnala la presenza di un valore immediato nell'istruzione

isLabel
boolean isLabel

Segnala la presenta di un'etichetta per l'istruzione

Functions
Compilatore
Compilatore(
Memoria m
)

Costruttore della classe Compilatore

Parameters
m

Memoria nella quale il compilatore salverà il programma dopo averlo tradotto

analyzeInstruction
boolean analyzeInstruction(
String instruction
)

Richiama findLabel() e findOperation().Se un'etichetta viene trovata,l'aggiunge alla mappa delle etichette se non è già presente

findLabel
boolean findLabel()

Se un'istruzione ha un'etichetta la trova e la salva nella variabile "label", altrimenti ritorna "false"

findOperation
void findOperation()

Salva il codice mnemonico dell'operazione nella variabile "op"

add
boolean add()

Verifica la correttezza dell'operazione ADD e salva gli operandi.Ritorna TRUE se un errore viene trovato

subtract
boolean subtract()

Verifica la correttezza dell'istruzione SUBTRACT e salva gli operandi.Ritorna "true" se un errore viene trovato

load
boolean load()

Verifica la correttezza dell'istruzione LOAD e salva gli operandi.Ritorna "true" se un errore viene trovato

store
boolean store()

Verifica la correttezza dell'istruzione STORE e salva gli operandi.Ritorna "true" se un errore viene trovato

move
boolean move()

Verifica la correttezza dell'istruzione MOVE e salva gli operandi.Ritorna "true" se un errore viene trovato

branch
boolean branch()

Verifica la correttezza dell'istruzione BRANCH e salva gli operandi.Ritorna "true" se un errore viene trovato

origin
boolean origin()

Verifica la correttezza dell'istruzione ORIGIN e la esegue.Ritorna "true" se un errore viene trovato

dataword
boolean dataword()

Verifica la correttezza dell'istruzione DATAWORD e la esegue.Ritorna "true" se un errore viene trovato

reserve
boolean reserve()

Verifica la correttezza dell'istruzione RESERVE e la esegue.Ritorna "true" se un errore viene trovato

decodeOperation
boolean decodeOperation()

Funzione di smistamento.In base al codice mnemonico , richiama la funzione adatta.Se il codice non viene riconosciuto ritorna un errore.

compileInstruction
boolean compileInstruction(
String op
)

Compila una singola istruzione.Ritorna un boolean che indica se un errore è stato trovato

Parameters
op
String

Contiene un'istruzione in linguaggio assembly

compile
boolean compile(
ArrayList<String> program
)

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

Parameters
program
ArrayList<String>

Contiene l'intero programma , sotto forma di lista di stringhe

d_compile
boolean d_compile(
String [] p_program,
int size
)

Legge ed esegue le direttive di compilatore

Parameters
p_program
String []

Contiene le direttive di compilatore sotto forma di lista di stringhe

size
int

Valore che indica il numero di direttive

storeOperation
void storeOperation()

Funzione che traduce l'istruzione macchina in codice binario e la salva in memoria.

skipSpaces
void skipSpaces()

Durante la lettura di un'istruzione viene usata per saltare gli spazi vuoti

resetValues
void resetValues()

Resetta variabili della classe compilatore.Chiamata per ogni istruzione che viene compilata