Dalla scrittura allesecuzione di un programma Assembler.

12
Dalla Dalla scrittura scrittura all’esecuzio all’esecuzio ne ne di un programma Assembler

Transcript of Dalla scrittura allesecuzione di un programma Assembler.

Page 1: Dalla scrittura allesecuzione di un programma Assembler.

Dalla scrittura Dalla scrittura all’esecuzioneall’esecuzione

di un programma Assembler

Page 2: Dalla scrittura allesecuzione di un programma Assembler.

L’assemblatorL’assemblatoree

Page 3: Dalla scrittura allesecuzione di un programma Assembler.

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.).

Page 4: Dalla scrittura allesecuzione di un programma Assembler.

Le fasi Le fasi dell’assemblatoredell’assemblatore

Page 5: Dalla scrittura allesecuzione di un programma Assembler.

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)

Page 6: Dalla scrittura allesecuzione di un programma Assembler.

Seconda passataSeconda passata• Utilizzando le tabelle costruite al passo

precedente viene generato il programma oggetto

Page 7: Dalla scrittura allesecuzione di un programma Assembler.

LinkerLinker

Page 8: Dalla scrittura allesecuzione di un programma Assembler.

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.

Page 9: Dalla scrittura allesecuzione di un programma Assembler.

LoaderLoader

Page 10: Dalla scrittura allesecuzione di un programma Assembler.

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

Page 11: Dalla scrittura allesecuzione di un programma Assembler.

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

Page 12: Dalla scrittura allesecuzione di un programma Assembler.

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.