Fondamenti di Informatica II Ingegneria Informatica...

Post on 28-Jul-2020

4 views 0 download

Transcript of Fondamenti di Informatica II Ingegneria Informatica...

Fondamenti Informatica II - Lez. 06 03.05.2006 1

Fondamenti di Informatica IIIngegneria Informatica e Biomedica

I anno, II semestreA.A. 2005/2006

Prof. Mario CannataroUniversità degli Studi “Magna Graecia”di Catanzaro

IJVM

Fondamenti Informatica II - Lez. 06 03.05.2006 2

Indice

Data PathL’AssemblerLo StackIJVM Instruction SetEsempi:

Primo Esempio Java 2 IJVMRicerca del maggiore tra due numeriSomma degli elementi di un vettore

Chiamata di un metodoEsempio di sottoprogramma

Fondamenti Informatica II - Lez. 06 03.05.2006 3

Data Path

Il data path rappresenta la parte operativa dell’architettura IJVM.

Ad ogni ciclo di clock èeseguita la microistruzione corrente mediante l’interazione dei registri, della memoria e della ALU, connessi da BUS.

Fondamenti Informatica II - Lez. 06 03.05.2006 4

Il linguaggio Assemblatore

E’ un linguaggio simbolico, seppur di basso livello.

Per essere effettivamente eseguito necessita di un’ulteriore traduzione che prevede la risoluzione dei nomi simbolici delle varie istruzioni nel rispettivo codice operativo e la risoluzione dei vari indirizzi di memoria, nel rispetto dell’effettiva implementazione della gestione della RAM.

L’operazione viene eseguita dall’assemblatore, mentre i riferimenti a moduli esterni vengono gestiti dal linker.

Fondamenti Informatica II - Lez. 06 03.05.2006 5

Assembler IJVM

E’ l’assembler impiegato dalla IJVM (IntegerJava Virtual Machine)

Per semplicità si usa una versione semplificata dellaJava Virtual Machine chiamata Integer JVM in cui non sono presenti:

Istruzioni floating pointGestione delle caratteristiche object-orientedGestione interruzioni

Fondamenti Informatica II - Lez. 06 03.05.2006 6

Il processo di Assemblaggio

Fondamenti Informatica II - Lez. 06 03.05.2006 7

Il processo di Assemblaggio

Fondamenti Informatica II - Lez. 06 03.05.2006 8

Il processo di Assemblaggio

Fondamenti Informatica II - Lez. 06 03.05.2006 9

Il processo di Collegamento

Fondamenti Informatica II - Lez. 06 03.05.2006 10

Stack: definizione

IJVM si serve di un’area di memoria configurata come uno stack per memorizzare le variabili locali delle procedure e per eseguire delle operazioni.

Lo stack è individuato da:

- Un registro LV che ne indica la base.

- Un registro SP che indica la cima.

Ogni variabile contenuta nello stack è indirizzata dall’offset rispetto ad uno dei due registri.

Fondamenti Informatica II - Lez. 06 03.05.2006 11

Stack : Esecuzione di calcoli

Esecuzione di calcoli

Lo stack può essere usato anche per eseguire delle operazioni.

Supponiamo di voler eseguire a2+a3.

• Inseriamo nello stack le due variabili

• Eseguiamo l’operazione per mezzo della ALU (nell’ipotesi che

sia possibile selezionare i primi due elementi dello stack SP e SP-1)

• memorizziamo il risultato.

Fondamenti Informatica II - Lez. 06 03.05.2006 12

Instruction set

L’instruction set rappresenta l’insieme delle istruzioni implementate dalla macchina.

Ogni istruzione è individuata da un proprio codice operativo e da un nome simbolico che facilita il compito del programmatore.

Il nome simbolico sarà impiegato quando si scrive il programma in Assembler, il traduttore risolverà il nome in un opcode.

Esistono differenti classi di istruzioni a seconda delle funzioni implementate. Meritano particolare attenzione le istruzioni di chiamata e di terminazione di un metodo.

Fondamenti Informatica II - Lez. 06 03.05.2006 13

Instruction set IJVM

Fondamenti Informatica II - Lez. 06 03.05.2006 14

Primo Esempio Java 2 IJVM

…..........i=j+k;if(i==3)k=0;elsej=j-1;…..........

Fondamenti Informatica II - Lez. 06 03.05.2006 15

Primo Esempio Java 2 IJVM

1. ILAOD j // i=j+k2. ILOAD k3. IADD4. ISTORE i5. ILOAD i // if(i==3)6. BIPUSH 37. IFICMPEQ L18. ILOAD j // j=j-19. BIPUSH 110. ISUB11. ISTORE j12. GOTO L213. L1:BIPUSH0 // k=014. ISTORE k

Fondamenti Informatica II - Lez. 06 03.05.2006 16

Primo Esempio Java 2 IJVM: Evoluzione dello Stack

Fondamenti Informatica II - Lez. 06 03.05.2006 17

Ricerca del Maggiore

Fondamenti Informatica II - Lez. 06 03.05.2006 18

Ricerca del Maggiore

Fondamenti Informatica II - Lez. 06 03.05.2006 19

Ricerca del Maggiore: Evoluzione dello Stack

Nota:

Nello stack dove sono presenti

i o j si intende i valori che essi assumo secondo i casi.

Con 73 e 74 si indica la loro codifica ASCII

Fondamenti Informatica II - Lez. 06 03.05.2006 20

Somma degli elementi di un vettore

Fondamenti Informatica II - Lez. 06 03.05.2006 21

Somma degli elementi di un vettore

Fondamenti Informatica II - Lez. 06 03.05.2006 22

Somma degli elementi di un vettore

Fondamenti Informatica II - Lez. 06 03.05.2006 23

Somma degli elementi di un vettore

Fondamenti Informatica II - Lez. 06 03.05.2006 24

Somma degli elementi di un vettore

Fondamenti Informatica II - Lez. 06 03.05.2006 25

Somma degli elementi di un vettore: Evoluzione dello Stack

Nota: Nello stack dove sono presentii, somma o step si intende i valori che essi assumo secondo i casi.

Per terminare il programma deve ciclare per 5 volte.

Fondamenti Informatica II - Lez. 06 03.05.2006 26

Chiamata di un metodo (1/4)

Quando viene chiamato un metodo, ovvero viene eseguita l’istruzione INVOKEVIRTUAL, viene preparata inizialmente l’area di esecuzione per il programma.

In questa fase vengono opportunamente inizializzati i vari registri LV SP CPP e PC i cui valori iniziali rappresenteranno il punto di partenza del programma.

In particolare PC punterà all’indirizzo della prima istruzione da eseguire, LV all’indirizzo della prima variabile locale, (le eventuali altre si troveranno a partire da LV sommando valori interi di offset), mentre SP alla cima dello stack.

Fondamenti Informatica II - Lez. 06 03.05.2006 27

Chiamata di un metodo (2/4)

Supponiamo che venga eseguita INVOKEVIRTUAL con tre parametri.

IJVM deve liberare l’area di memoria necessaria per il nuovo metodo, passare a questo i parametri e memorizzare i valori di SP e LV per poter poi ritornare all’esecuzione del metodo chiamante

Fondamenti Informatica II - Lez. 06 03.05.2006 28

Chiamata di un metodo (3/4)

LV del nuovo metodo viene inizializzato a LV (chiamante)+1

In questo modo i primi tre valori dello stack sono i parametri dell’invocazione del metodo. Successivamente viene allocata l’area per eventuali variabili locali e alla fine vengono inseriti nello stack LC e PC del chiamante per poter ripristinare lo stato al termine dell’esecuzione.

Fondamenti Informatica II - Lez. 06 03.05.2006 29

Chiamata di un metodo: riepilogo (4/4)

Fondamenti Informatica II - Lez. 06 03.05.2006 30

Terminazione di un metodo (1/3)

L’istruzione IRETURN serve per terminare un metodo. Essa deve riportare i valori dei vari registri allo stato precedente all’esecuzione del metodo terminato.

Fondamenti Informatica II - Lez. 06 03.05.2006 31

Terminazione di un metodo (2/3)

Supponiamo che il programma precedente sia terminato ed esegua IRETURN specificando anche un valore di ritorno da passare al chiamante. L’architettura deve ora riprendere le informazioni del LV precedente per ritornare allo stack del chiamante e del PC precedente per proseguire con l’istruzione successiva. Questa operazione è spesso chiamata con il nome di ricostruzione dello stato.

Fondamenti Informatica II - Lez. 06 03.05.2006 32

Terminazione di un metodo (3/3)

Il valore di PC corrente viene impiegato per caricare la successiva istruzione. In LV della procedura che esegue IRETURN viene passato il valore di ritorno, SP viene posto uguale a LV e LV viene posto uguale al valore contenuto in LV(della procedura che esegue IRETURN) –1 . Le frecce indicano i collegamenti realizzati.

Fondamenti Informatica II - Lez. 06 03.05.2006 33

Esempio sottoprogramma

Fondamenti Informatica II - Lez. 06 03.05.2006 34

Esempio sottoprogramma

Fondamenti Informatica II - Lez. 06 03.05.2006 35

Esempio sottoprogramma