Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

21
Architettura Architettura degli degli Elaboratori II Elaboratori II (canale P-Z) (canale P-Z) Modi di Indirizzamento Modi di Indirizzamento Dott. Franco Liberati Dott. Franco Liberati

Transcript of Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Page 1: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Architettura degli Architettura degli Elaboratori IIElaboratori II

(canale P-Z)(canale P-Z)

Modi di IndirizzamentoModi di Indirizzamento

Dott. Franco LiberatiDott. Franco Liberati

Page 2: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Argomenti

Assoluto Immediato A Registro Incremento

SPOSTAMENTOSPOSTAMENTO

LOGICO-ARITMETICHELOGICO-ARITMETICHE

SALTOSALTO

SISTEMASISTEMA

Page 3: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Modi di indirizzamento

Un modo di indirizzamento è un modo per esprimere un indirizzo di memoriaNB: alla fine il risultato è sempre un indirizzo di memoria dove si andrà a leggere (load) o scrivere (store) un dato.

La struttura è

Nel linguaggio macchina MIPS, esiste un solo modo di indirizzamentoimm(register)

dove l’indirizzo è dato dalla somma del valore immediato imm più il contenuto del registro register

Esempio: lw $t0, 4($sp) (legge una word dall’indirizzo $sp + 4)

OPCODEOPCODE MODO DI INDIRIZZAMENTOMODO DI INDIRIZZAMENTO

Page 4: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Modi di IndirizzamentoModi di Indirizzamentoinin

SPIMSPIM

Page 5: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Modi di indirizzamento

L’assembler fornisce per comodità più modi di indirizzamento

Un indirizzo si può esprimere come somma di:

una etichetta + una espressione + un registro

Esempio: lw $t1, array + 0x100($t0) (mette nel registro $t1, la word sita all’indirizzo 0x10010104 assumendo: array = 0x10010000 e $t0 = 4)

Page 6: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

A REGISTRO

(base register) Specifica un indirizzo tramite registro base, assumendo un

offset 0. L’indirizzo è dato dal contenuto del base register

Esempio: lb $t0,($a0)

Page 7: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

A REGISTROlb $t0,($a0)

1000110110001101

00000010

00000010

$t0$t0

Page 8: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATO

(expression) Specifica un indirizzo assoluto con una espressione

L'indirizzo è dato dal valore presente nel campo indirizzo.

Esempio: lb $t0, 0x00 40 00 00

Page 9: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATOlb $t0, 0x00 00 00 8Dlb $t0, 0x00 00 00 8D

……

1000110110001101

00000010

00000010

$t0$t0

Page 10: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATO con spiazzamento

expression Specifica un indirizzo assoluto con una espressione fatta

solo di somme e sottrazioni di costanti espresse in decimale o esadecimale.

L'indirizzo è dato dal risultato dell'espressione (costante).

Esempio: lb $t0, 0x00 40 00 00+4 I numeri negativi vanno comunque preceduti anche dal

simbolo +.

Esempio: lb $t0, 0x10 01 00 0c + -4

Page 11: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATO con spiazzamento

lb $t0, 0x00 00 00 8D + 4lb $t0, 0x00 00 00 8D + 4

……1001000010010000100100011001000110010010100100101001001110010011

……

++

100100

1000110110001101

00000010

00000010

$t0$t0

Page 12: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATO A REGISTRO

expression(base register) Specifica un indirizzo tramite registro base e un offset

tramite una espressione L'indirizzo è dato dal contenuto del base register + il

risultato dell'espressioneEsempio: lw $t0, 4($sp)

Page 13: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

IMMEDIATO A REGISTROEsempio: lw $t0, 4($sp)

……1001000010010000100100011001000110010010100100101001001110010011

……

++

100100

1000110110001101

00000010

00000010

$t0$t0

10001101 $sp$sp

Page 14: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO

Relocatable-symbol Specifica un indirizzo (rilocabile) tramite una etichetta. L'assemblatore genera le istruzioni necessarie per gestire

l'etichetta e aggiunge al modulo oggetto generato le informazioni di rilocazione.

Esempio: lw $t0, operandA

Page 15: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO

……

……

operanA=10010001operanA=10010001

00000010

00000010

$t0$t0

1001000010010000100100011001000110010010100100101001001110010011

Esempio: lw $t0, operandA

Page 16: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento

Relocatable-symbol ± expression Specifica un indirizzo base tramite una etichetta, mentre

l’offset viene specificato tramite un’espressione L’indirizzo è dato dalla somma dell’indirizzo associato

all’etichetta con il risultato dell’espressioneEsempio: lw $t0, operandoB + 4

Page 17: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento

Esempio: lw $t0, operandB+4

……

……

operandoB=10001101operandoB=10001101

00000010

00000010

$t0$t0

1001000010010000100100011001000110010010100100101001001110010011

++

100100

Page 18: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento a registroRelocatable-symbol(index register) Specifica un indirizzo base tramite una etichetta, mentre

l’offset viene specificato tramite un registro indice L’indirizzo è dato dalla somma dell’indirizzo associato

all’etichetta con il contenuto del registro indice.Esempio: lw $t0, array($t1)

Page 19: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento a registro

……

……

array=10001100array=10001100

00000010

00000010

$t0$t0

1001000010010000100100011001000110010010100100101001001110010011

++

0000010100000101

$t1$t1 00000101

Esempio: lw $t0, array($t1)

Page 20: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento a a spiazzamento a registroRelocatable-symbol ± expression(index register) Specifica un indirizzo base tramite una etichetta, mentre

l’offset viene specificato tramite un registro indice e un’espressione

L’indirizzo è dato dalla somma dell’indirizzo associato all’etichetta con il contenuto del registro indice e il risultato dell'espressione.

Esempio: lw $t0, array + 4($t1)

Page 21: Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

SIMBOLICO con spiazzamento a a spaziamento a registro

Esempio: lw $t0, array+4($t1)

……

……

array=10001100array=10001100

00000010

00000010

$t0$t0

1001000010010000100100011001000110010010100100101001001110010011

++

0000000100000001

$t1$t1 00000001

++0000010000000100