fondamenti di informatica ii ingegneria informatica...
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042807/5f7b834c6ddab9098329b117/html5/thumbnails/35.jpg)
Fondamenti Informatica II - Lez. 06 03.05.2006 35
Esempio sottoprogramma