fondamenti di informatica ii ingegneria informatica...
TRANSCRIPT
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