Anteprima
Vedrai una selezione di 1 pagina su 4
3 Macchine compilatori e interpreti Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

ESECUTORE ED ALGORITMI

Per scrivere una soluzione nella forma definitiva è necessario sapere chi la eseguirà.

L’esecutore di riferimento per il nostro studio è ovviamente il calcolatore elettronico. Un

calcolatore reale è in grado di comprendere solo soluzioni codificate nel proprio

linguaggio, cioè in linguaggio macchina; Il linguaggio macchina non è di uso pratico, né di

facile comprensione. E dunque vi sono due opportunità:

Visto che l’esecutore finale è una macchina reale M si può scrivere la soluzione nel

1) suo linguaggio LM.

Si può adoperare un linguaggio L più “amichevole”, un linguaggio di

2) programmazione ad alto livello:

Si scrive l’algoritmo nel linguaggio L;

a. Si traduce (per mezzo di un compilatore) la soluzione codificata nel

b. linguaggio L in un’altra (ad essa equivalente) codificata nel linguaggio LM

della macchina;

Oppure si esegue l’algoritmo per mezzo di un intermediario (detto

c. interprete) che opera sulla macchina M senza necessità di traduzioni.

COMPILATORI E INRERPRETI

COMPILATORE

1) I

L e L sono linguaggi di programmazione. Un compilatore è un traduttore che trasforma

I

algoritmi scritti nel linguaggio L in algoritmi equivalenti scritti nel linguaggio L .

Un compilatore è un programma che può essere eseguito da una certa macchina M e che

I

esegue la trasformazione prescritta; il linguaggio L è spesso il linguaggio macchina di M,

ma non è obbligatorio!

INTERPRETE

2)

L è un linguaggio di programmazione, M una macchina. Un interprete del linguaggio L è

un esecutore, cioè un programma per la macchina M, in grado di eseguire (senza tradurli)

programmi scritti nel linguaggio L.

In pratica, un interprete è un programma che simula il comportamento di una macchina

diversa (astratta o concreta che sia).

SITUAZIONI IBRIDE

3) I

Un programma scritto nel linguaggio L (codice sorgente) pu esser compilato nel

linguaggio L e il risultato (codice intermedio) eseguito dall’interprete VL (detto anche

macchina virtuale).

Un esempio è Java, che traduce il codice sorgente in un linguaggio per macchina astratta

(compilatore) e realizza in modo "virtuale" la macchina astratta ed è in grado di

comprendere ed eseguire algoritmi in codice intermedio (interprete).

IL COMPILATORE: L'INTERPRETE:

Gli algoritmi sono scritti in linguaggio Java e Il codice prodotto dal compilatore (il codice

memorizzati in un file che ha l’estensione .java. intermedio) è contenuto in un file che prende lo

Il codice sorgente non è eseguibile: viene stesso nome del codice sorgente, ma con

tradotto in un linguaggio intermedio, noto con il l’estensione .class. L’interprete, la Java Virtual

nome bytecode, e memorizzato in un file con Machine (JVM), comprende il codice intermedio

estensione .java. Il compilatore Java è e pu eseguirlo. Il comando java consente di

associato al comando javac: javac “invocare” l’interprete: javac <nomefile>

<nomefile>.java

LA MACCHINA ASTRATTA

Che cosa fa esattamente un algoritmo scritto in pseudo codice? Per saperlo dobbiamo

dire come reagisce l’esecutore di riferimento matematico. Descriveremo allora un

esecutore astratto (matematico), ma molto simile ad un esecutore reale.

La macchina astratta è il modello matematico a cui

fa riferimento l'interprete. È composta da:

• memoria: insieme illimitato di celle che possono

contenere numeri interi;

• processore: dispositivo in grado di eseguire

istruzioni di un linguaggio specifico della

macchina;

• input: sequenza illimitata di numeri interi;

• output: sequenza finita, ma potenzialmente illimitata, di numeri interi.

MEMORIA: divisa in celle (o locazioni) di memoria, ognuna delle quali può

1. contenere un numero intero qualunque. In un istante solo un numero finito di celle è

usato dalla macchina.

Ogni singola cella di memoria può contenere un numero intero arbitrario.

a. Le celle di memoria usate sono sempre in numero finito, ma non c’è un limite

b. a quante ne possiamo usare: in pratica, le estensioni della memoria sono

“gratis”.

Il numero associato ad una cella si chiama indirizzo e ci permette di

c. ritrovare quello che abbiamo messo da parte nella memoria.

PROCESSORE: è un dispositivo che:

2. Riconosce un numero finito di istruzioni “di basso livello”;

a. Agisce sulla macchina secondo le indicazioni dell’istruzione corrente;

b. Opera in modo discreto, ossia in un tempo finito esegue un numero finito di

c. passi di calcolo (istruzioni);

Opera in modo

d. deterministico.

L'istruzione corrente è

individuata da una speciale cella,

il program counter, che è

"incorporata" nel processore.

L'esecuzione di un'istruzione del

processore modifica la memoria,

ossia lo stato della macchina.

INPUT

3. L'input rappresenta il flusso di

dati provenienti dall'esterno. In

matematica è una sequenza

ordinata di interi di lunghezza illimitata. L'accesso all'input è strettamente

sequenziale: il processore può leggere SOLO il primo elemento che viene poi tolto

dall'elenco.

OUTPUT

4. L'output rappresenta il flusso di dati restituiti all'esterno. In struttura matematica,

esso è una sequenza ordinata di numeri interi di lunghezza finita ma

potenzialmente illimitata. L'accesso all'output è strettamente sequenziale: il

processore può aggiungere un nuovo elemento in coda che non è più modificabile.

IL CODICE MACCHINA

Un programma scritto per la macchina (astratta) è una sequenza finita di istruzioni

macchina. Le istruzioni della macchina astratta sono essenzialmente di tre tipi:

istruzioni che agiscono sulla

- memoria e su input e output;

istruzioni aritmetiche;

- istruzioni di controllo.

-

La macchina esegue il programma

secondo un procedimento detto ciclo della

macchina.

La Sintassi delle Istruzioni Macchina

SINTASSI DELLE ISTRUZIONI MACCHINA

Una generica istruzione macchina ha il seguente formato:

cod op1 op2

Dettagli
Publisher
A.A. 2014-2015
4 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ivyB di informazioni apprese con la frequenza delle lezioni di Programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Verona o del prof Solitro Ugo.