Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli...

15
IJVM Architettura degli Elaboratori Danilo Dessì [email protected]

Transcript of Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli...

Page 1: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

IJVMArchitettura degli Elaboratori

Danilo Dessì

[email protected]

Page 2: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Sezioni di un programma IJVM

Architettura degli elaboratori exp - ijvm

• Costantio Si dichiarano globalmenteo Sintassi

o .constantconstant1 value1constant2 value2

o .end-constant

• Variabilio Si dichiarano solamente locali nel

main o nei vari methodo Sintassi

o .varvar1var2

o .end-var

o Si referenziano per nome con ILOADe ISTORE

• Etichetteo Marcano punti del

programma ai quali èpossibili saltare

o Sono accessibili soloall’interno del metodo incui appaiono

• Maino Solo uno per ogni programmao Sintassi

o .maindichiarazione delle variabiliistruzioni del programma

o .end-main

Page 3: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Instruction set

Architettura degli elaboratori exp - ijvm

Page 4: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Instruction Set del giorno

Architettura degli elaboratori

Istruzione Significato

ILOAD vInserisce (push) il valore della variabile v in cima allostack

ISTORE vRimuove (pop) il valore che è presente in cima allo stack e lo salva nella variabile v

BIPUSH byte Push di byte sullo stack

IADD Pop di due parole dallo stack e push della loro somma

ISUBPop di due parole dallo stack e push della loro differenza

exp - ijvm

Page 5: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio funzionamento istruzioni aritmetiche

Architettura degli elaboratori

Si caricano gli operandi in cima allo stack

Si richiama l’operazione che si vuole eseguire

0x1

0xab

0x30

BIPUSH 0x10

BIPUSH 0x7

ISUB

exp - ijvm

Page 6: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio funzionamento istruzioni aritmetiche

Architettura degli elaboratori

Si caricano gli operandi in cima allo stack

Si richiama l’operazione che si vuole eseguire

BIPUSH 0x10

BIPUSH 0x7

ISUB 0x10

0x1

0xab

0x30

exp - ijvm

Page 7: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio funzionamento istruzioni aritmetiche

Architettura degli elaboratori

Si caricano gli operandi in cima allo stack

Si richiama l’operazione che si vuole eseguire

BIPUSH 0x10

BIPUSH 0x7

ISUB

0x7

0x10

0x1

0xab

0x30

exp - ijvm

Page 8: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio funzionamento istruzioni aritmetiche

Architettura degli elaboratori

Si caricano gli operandi in cima allo stack

Si richiama l’operazione che si vuole eseguire

BIPUSH 0x10

BIPUSH 0x7

ISUB 0x9

0x1

0xab

0x30

exp - ijvm

Page 9: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio 1

Architettura degli elaboratori

Scrivere un programma IJVM che calcola la seguente espressione:

i = j + k + 4

con j = 6 e k = 2

3 variabili: i, j, k

4 può essere dichiarato come costante

.main.varijk.end-var

BIPUSH 0x6ISTORE jBIPUSH 0x2ISTORE kILOAD jILOAD kBIPUSH 0x4IADDIADDISTORE iHALT

.end-main

exp - ijvm

Page 10: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esempio 2

Architettura degli elaboratori

Scrivere un programma IJVM che calcola la seguente espressione:

r = k + k - j - j - j

con j = 5 e k = 20

3 variabili: r, j, k

.main.varrjk.end-var

BIPUSH 0x5ISTORE jBIPUSH 0x14ISTORE kILOAD kILOAD kIADDILOAD jISUBILOAD jISUB

ILOAD j ISUBISTORE rHALT

.end-main

exp - ijvm

Page 11: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Esercizi

Architettura degli elaboratori

Scrivere in IJVM i metodi main per calcolare le seguenti espressioni:

R = x + y + z con x = 10, y = 16, z = 33 [0x3B] R = x – y – z con x = 31, y = 14, z = 5 [0xC] R = ( x + y ) – ( x + z ) con x = 7, y = 23, z = 8 [0xF] R = x – y + x - z con x = 8, y = 11, z = 2 [0x3]

exp - ijvm

Page 12: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Soluzione 1

Architettura degli elaboratori

.main.var

xyzR

.end-var

BIPUSH 0xaISTORE xBIPUSH 0x10ISTORE yBIPUSH 0x21ISTORE z

R = x + y + z con x = 10, y = 16, z = 33

ILOAD xILOAD yILOAD zIADDIADDISTORE RHALT

.end-main

exp - ijvm

Page 13: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Soluzione 2

Architettura degli elaboratori

.main.var

xyzR

.end-var

BIPUSH 0x1FISTORE xBIPUSH 0xEISTORE yBIPUSH 0x5ISTORE z

R = x – y – z con x = 31, y = 14, z = 5

ILOAD xILOAD yISUBILOAD zISUBISTORE RHALT

.end-main

exp - ijvm

Page 14: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Soluzione 3

Architettura degli elaboratori

.main.var

xyzR

.end-var

BIPUSH 0x7ISTORE xBIPUSH 0x17ISTORE yBIPUSH 0x8ISTORE z

R = ( x + y ) – ( x + z ) con x = 7, y = 23, z = 8

ILOAD xILOAD yIADDILOAD xILOAD zIADDISUBISTORE RHALT

.end-main

exp - ijvm

Page 15: Architettura degli Elaboratori...2013/01/02  · Architettura degli elaboratori Si caricano gli operandi in cima allo stack Si richiama l’operazione che si vuole eseguire BIPUSH

Soluzione 4

Architettura degli elaboratori

.main.var

xyzR

.end-var

BIPUSH 0x8ISTORE xBIPUSH 0xBISTORE yBIPUSH 0x2ISTORE z

R = x – y + x - z con x = 8, y = 11, z = 2

ILOAD xILOAD yISUBILOAD xIADDILOAD zISUBISTORE RHALT

.end-main

exp - ijvm