Dalla scrittura allesecuzione di un programma Assembler.

Post on 01-May-2015

222 views 1 download

Transcript of Dalla scrittura allesecuzione di un programma Assembler.

Dalla scrittura Dalla scrittura all’esecuzioneall’esecuzione

di un programma Assembler

L’assemblatorL’assemblatoree

DefinizioneDefinizione• Un assembler (assemblatore in italiano) è un software

che trasforma le istruzioni mnemoniche dell'assembly in linguaggio macchina.

• Si tratta dunque di un compilatore per un particolare linguaggio assembly.

• Il termine assembler deriva dal fatto che le istruzioni vengono convertite e montate una accanto all'altra come se fossero in fila.

• Ci sono molti tipi di linguaggi assembly e di conseguenza diversi assemblatori: esistono gli assembler per programmare i microchip, per creare programmi sul Personal Computer, per telefoni cellulari, ecc. Questo perché un assemblatore produce codice assembly per una specifica famiglia di processori (intel 8086, 80386, Motorola 68000, ecc.).

Le fasi Le fasi dell’assemblatoredell’assemblatore

Prima passataPrima passata• Il programma viene analizzato e il Location

Counter viene aggiornato di volta in volta in base alla lunghezza di ogni singola istruzione (utilizzando una tabella con i codici delle istruzioni e la loro lunghezza).

• Viene generata la Tabella dei simboli e delle costanti. (ad ogni simbolo o costante viene associato il relativo indirizzo)

Seconda passataSeconda passata• Utilizzando le tabelle costruite al passo

precedente viene generato il programma oggetto

LinkerLinker

Caricatore (linker)Caricatore (linker)• Il linking (letteralmente "collegamento”) è il

procedimento di integrazione dei vari moduli a cui un programma fa riferimento (i quali possono essere sottoprogrammi o librerie), per creare una singola unità eseguibile.

• Il linker (o link editor) è un programma che effettua il collegamento tra il programma oggetto, cioè la traduzione del codice sorgente in linguaggio macchina, e le librerie del linguaggio necessarie per l'esecuzione del programma.

LoaderLoader

Caricatore (loader)Caricatore (loader)• Viene individuata una zona di memoria in cui

caricare il programma.• Il programma viene caricato in questa zona di

memoria e vengono risolti gli indirizzamenti• A questo punto il programma può essere esguito

Le fasi di esecuzione Le fasi di esecuzione di un programmadi un programma

Le fasi in dettaglioLe fasi in dettaglio• Fetch

o l’Unità di Controllo pone sull’Bus degli Indirizzi il valore del Program Counter, e legge dalla Memoria e il codice operativo dell’istruzione

• Decodeo L’Unità di Controllo , in base al codice di controllo, determina la

lunghezza dell’istruzione, legge dalla memoria gli operandi (Operand Fetch) che si trovano agli indirizzi adiacenti a quello dell’Op.Code. e li carica nei registri.

• Executeo viene avviato il microprogramma relativo all’Op.Code attuale, che

usa i propri parametri correttamente memorizzati nei registri. La frequenza in base alla quale vengono eseguiti i microprogrammi è regolata dal clock di CPU (frequenza del Microprocessore).

• Storeo al termine della fase di Execute gli eventuali risultati, posti nei Registri,

vengono scritti sul Bus dall’UC, o verso la Memoria, o verso l’I/O.