Confronto architetture ISA
description
Transcript of Confronto architetture ISA
Architettura degli elaboratori 25/6/2003
Confronto architetture ISA
P.Torasso
Architettura degli elaboratori 25/6/2003
Macchina a tre indirizzi• Architettura load/store (solo queste due istruzioni
accedono a dati in memoria)
• Architettura con 32 registri di cui 28 di uso generale (R0 – R27)
• Tutte le istruzioni stanno in una sola parola di 32 bit (semplificazione)
• Le operazioni logiche aritmetiche avvengono tra registri
• Operazioni logico aritmetiche possono avere un operando che è un immediato
• Le istruzioni di salto condizionato dipendono dal risultato della istruzione precedente (bit impostato su PSW)
Architettura degli elaboratori 25/6/2003
Macchina a tre indirizzi• Istruzioni aritmetiche e logiche hanno la forma
src1, src2, dest dove scr1, scr2 e dest sono dei registri di uso generale,
• Le istruzioni con questo formato siano ADD, SUB, MULT, AND, OR, XOR, NOR
• Per le istruzioni di cui sopra esiste anche un formato in cui scr2 è sostituito da un immediato (nelle operazioni aritmetiche interpretato come numero in complemento a due). Il formato è src1, immed, dest dove scr1 e dest sono dei registri di uso generale
• In questo formato il codice operativo è ADDi, SUBi, MULTi, ANDi, ORi, XORi, NORi
Architettura degli elaboratori 25/6/2003
Macchina a tre indirizzi• Le istruzioni NOT e INV hanno il formato
Scr, dest dove scr e dest sono registri di uso generale
• Esistono anche istruzioni per lo shift a destra (SHR) e a sinistra (SHL) il cui formato è src,immed, dest dove il contenuto di scr e’ shiftato di un numero di bit dato da immed e il risultato e’ salvato in dest
• Scr e dest sono registri di uso generale
Architettura degli elaboratori 25/6/2003
Macchina a tre indirizzi• La LOAD ha formato addr, dest dove addr è l’indirizzo di una cella di
memoria e dest è un registro generale. La LOAD carica in dest il contenuto della cella di cui si è fornito addr
• L’ istruzione LOADi carica in dest l’immediato che è fornito come parametro
• LOADx carica in dest quanto e’ contenuto nella cella il cui indirizzo e’ ottenuto sommando a scr (usato come il registro indice) l’offset
Esempi
• LOAD 1000, R2
• LOADi 1000,R2
• LOADx R1, 1000, R2
Per istruzione STORE esiste formato Src, Addr e formato indicizzato STOREx con Scr, offset, Index
Architettura degli elaboratori 25/6/2003
Macchina a tre indirizzi• Istruzione di salto incondizionato è JUMP Addr
(l’indirizzo e’ un displacement rispetto al registro PC)
• Ci sono varie istruzione di tipo BRANCH nel cui codice operativo è indicata anche la condizione (ze, nz, po, np, ne,nn)
• Le istruzioni di tipo BRANCH hanno il formato Branch addr e valgono le stesse considerazioni fatte per Jump Jump
• Esiste una istruzione CALL addr e la sua duale RETURN
Architettura degli elaboratori 25/6/2003
Esempio Architettura tre indirizziSupponendo che le variabili k, i e j
siano memorizzate nelle celle di indirizzo esadecimale 1000, 1003 e 107 rispettivamente
LOAD 1003, R1
SHL R1,2,R1
LOAD 107,R2
SUB R1,R2,R3
SUBi R3,3,R3
BRze 3
AND R2,0,R2
JUMP 2
ADDi R2,5,R2
STORE R2, 107
STORE R3, 1000
Frammento in JAVA
k = 4*i –j –3
if (k= =0)
j = j+5;
else
j = 0;
Architettura degli elaboratori 25/6/2003
Esempio Architettura tre indirizziLOAD 1003, R1
SHL R1,2,R1
LOAD 107,R2
SUB R1,R2,R3
SUBi R3,3,R3
STORE R3, 1000
ADD R3, 0, R3
BRze 3
AND R2,0,R2
JUMP 2
ADDi R2,5,R2
STORE R2, 107
Come nel caso precedente si suppone che le variabili k, i e j siano memorizzate nelle celle di indirizzo esadecimale 1000, 1003 e 107 rispettivamente
Per essere più vicini ad una traduzione di ogni singola istruzione java si può avere il seguente codice
E’ necessaria una istruzione logica artimentica (es ADD R3, 0, R3) per settare i bit della condizione che verranno analizzati da BRze
L’istruzione AND R2,0,R2 può essere sostituita da LOADi 0, R2
Architettura degli elaboratori 25/6/2003
Esempio in IJVMFrammento in JAVA
k = 4*i –j –3
if (k= =0)
j = j+5;
else
j = 0;
Supponendo che le variabili k, i e j siano memorizzate nella local variable area con offset 5, 2 e 6 rispettivamente
ILOAD 2 ISTORE 6
DUP GOTO 6
IADD IINC 6 5
DUP ……..
IADD
ILOAD 6
ISUB
BIPUSH 3
ISUB
ISTORE 5
ILOAD 5
IFEQ 10
BIPUSH 0