ASSEMBLATORE L'assemblatore traduce un programma scritto in linguaggio assembly nel corrispettivo programma in linguaggio macchina eseguibile. E quindi costituito da un programma che legge tutte le istruzioni assembly che costituiscono il programma, traduce in linguaggio macchina i codici operativi, i dati e le label, controllandone la correttezza sintattica, e genera un file eseguibile. Livello implementato tramite compilazione e non interpretazione Programma sorgente ASSEMBLATORE (Assembler) Programma oggetto CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 Problema delle forward reference ! ASSEMBLATORE A DUE PASSI 1 Passo : - individuazione di tutti i nomi (le label) che compaiono come riferimento simbolico di dati o di istruzioni - creazione di una Symbol Table che contiene le label con la loro posizione relativa all'interno del programma 2 Passo : - traduzione dei codici mnemonici delle istruzioni, degli operandi e delle label, mediante la consultazione della symbol table costruita nel 1 passo. CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 Formato istruzione assembly Label : cod. operat. Operando/ i ; commento Esempio di source code MOV SI, 0 MOV CX,7 CICLO: CMP VET[SIBX JE BINGO INC SI LOOP CICLO BINGO: RET Backward reference Forward reference Label : CICLO, BINGO ILC = Instruction Location Counter contiene il valore numerico associato alle label CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 Pseudoistruzioni Il linguaggio assemblatore consente al programmatore di specificare informazioni indispensabili per la traduzione del programma sorgente in programma oggetto Pseudo-istruzioni : Istruzioni il cui codice operativo rappresenta un comando (direttiva) all'assemblatore. Le pseudo-istruzioni infatti non compaiono nel programma oggetto alla fine della fase di traduzione CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 ASSEMBLATORE a due passi Symbol Opcode table table 1 Moduli PASSO 2 PASSO Codice sorgente oggetto CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 1 passo dell'assemblatore start Opcode table source code Inizializza: - symbol table - ILC Leggi statement successivo si ILC = ILC + lungh. istr. Commento no Inserisci il simbolo nella symbol table con valore ILC si Esegui pseudo-operazione richiesta no Simbolo no Opcode si no stop si Pseudoistruzione errore CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 Symbol table Simbolo . CICLO BINGO . valore ILC . 124 128 . altre informaz. . - lunghezza del data field associato al simbolo, - bit di rilocazione, - se il simbolo è accessibile al di fuori della procedura . Opcode table Codice MOV ADD JE SUB MUL . opcode hex. 5A 4A 1C 19 D2 . lungh. in byte 3 2 2 2 2 . classe. 1 2 3 2 2 . CdLInformatica- Università di Bari ArchitetturadegliElaboratoriA.A. 2003-2004 2 passo dell'assemblatore start Opcode table symbol Continua »