Sei sulla pagina 1di 14

I Linguaggi Li i Assembler

M. M Sonza Reorda P. Bernardi

Processo di Assemblaggio
Utente Editor Codice C di Sorgente Debugger Assemblatore Codice Oggetto RAM Codice Macchina CPU

Linker

Codice Eseguibile

Loader

Assemblaggio
Il file sorgente viene trasformato in file oggetto tramite:
Rimozione dei commenti Associazione di ciascuna variabile simbolica ad una adeguata locazione di memoria Traduzione in codice macchina di ciascuna istruzione.

Alcune operazioni non possono ancora essere Al i i completate, ad esempio quelle che riguardano:
Le L variabili definite i altri moduli i bili d fi it in lt i d li Le procedure definite in altri moduli.

Link
Procede alla creazione del file eseguibile a p partire da p file oggetto pi gg Provvede a verificare la correttezza dei richiami a variabili e procedure definite in altri p moduli e a generare gli indirizzi opportuni. Il file prodotto non di solito immediatamente eseguibile in quanto
Risiede su disco anzich in memoria Deve essere indipendente dalla posizione in memoria in cui verr caricato.

Loader
Fa parte del Sistema Operativo Provvede a
reperire il file eseguibile su disco caricarlo i memoria, eseguendo l eventuali i l in i d le t li modifiche rese necessarie dopo che stata decisa la sua posizione in memoria fare in modo che il processore inizi lesecuzione del programma programma.

Debugger
Interagisce con i processi di assemblaggio, link ed esecuzione, permettendo al programmatore di disporre di facilities quali:
Breakpoint Esecuzione passo passo Accesso a variabili e registri (i l tt A i bili i t i (in lettura e scrittura) itt )

Caratteristiche di un linguaggio Assembler


Formato delle Istruzioni Tipi di Istruzioni Modi di Indirizzamento

Formato delle Istruzioni


A livello di codice macchina, le istruzioni sono formate di 2 parti:
il codice delloperazione da svolgere (opcode) gli operandi

A seconda del numero tipico di operandi ammesso i ogni i t i in i istruzione si possono avere i processori a 0, 1, 2 o 3 operandi.
opcode operando 1 operando 2

Numero di Operandi
I processori possono essere classificati in base al numero di operandi esprimibili nella singola istruzione Se il numero di operandi minore, il tempo di decodifica ed esecuzione dellistruzione minore, come pure la memoria richiesta dal codice Daltro canto una stessa operazione richiede un numero di istruzioni maggiore per essere eseguita, se queste hanno un numero ridotto di operandi.

Codice Operativo
Serve ad identificare listruzione Pu occupare un numero variabile di bit In taluni casi una parte di questi bit viene utilizzata per specificare gli operandi tili t ifi li di Non necessariamente i codici operativi di p tutte le istruzioni hanno la stessa lunghezza.

Formato delle Istruzioni


1 byte ADD reg
codice operativo operando 2 (registro)

2 byte ADD data


codice operativo operando immediato o indirizzo

3b byte JMP addr

codice operativo

operando immediato o indirizzo

Tipi di Istruzioni
Ogni processore ha il suo linguaggio Assembler Esistono tuttavia forti somiglianze tra i linguaggi Assembler dei vari processori. processori

Classi di Istruzioni
Istruzioni di Trasferimento dati Istruzioni Aritmetiche Istruzioni Logiche Istruzioni per il Controllo del Programma Istruzioni di Input/Output Input/Output.

Modi di Indirizzamento
Rappresentano i modi attraverso i quali specificato il tipo ed il valore o la posizione di ciascun operando. d I pi frequenti sono:
indirizzamento indiri amento immediato indirizzamento diretto indirizzamento indiretto

Laddove compare come operando un indirizzo, q questo p essere specificato in 2 modi: pu p


indirizzamento assoluto indirizzamento relativo.