fondamenti di informatica ii ingegneria informatica...

35
Fondamenti Informatica II - Lez. 06 03.05.2006 1 Fondamenti di Informatica II Ingegneria Informatica e Biomedica I anno, II semestre A.A. 2005/2006 Prof. Mario Cannataro Università degli Studi “Magna Graecia” di Catanzaro IJVM

Upload: others

Post on 28-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 2: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 3: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 4: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 5: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 6: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 6

Il processo di Assemblaggio

Page 7: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 7

Il processo di Assemblaggio

Page 8: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 8

Il processo di Assemblaggio

Page 9: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 9

Il processo di Collegamento

Page 10: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 11: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 12: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 13: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 13

Instruction set IJVM

Page 14: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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;…..........

Page 15: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 16: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 16

Primo Esempio Java 2 IJVM: Evoluzione dello Stack

Page 17: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 17

Ricerca del Maggiore

Page 18: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 18

Ricerca del Maggiore

Page 19: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 20: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 20

Somma degli elementi di un vettore

Page 21: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 21

Somma degli elementi di un vettore

Page 22: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 22

Somma degli elementi di un vettore

Page 23: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 23

Somma degli elementi di un vettore

Page 24: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 24

Somma degli elementi di un vettore

Page 25: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 26: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 27: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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

Page 28: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 29: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 29

Chiamata di un metodo: riepilogo (4/4)

Page 30: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 31: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 32: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

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.

Page 33: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 33

Esempio sottoprogramma

Page 34: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 34

Esempio sottoprogramma

Page 35: Fondamenti di Informatica II Ingegneria Informatica …staff.icar.cnr.it/.../Esercitazioni/FI-II-ESE-06-IJVM_A.pdfFondamenti Informatica II - Lez. 06 03.05.2006 3 Data Path Il data

Fondamenti Informatica II - Lez. 06 03.05.2006 35

Esempio sottoprogramma