Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoVittorio Caselli Modificato 10 anni fa
1
Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati
2
Argomenti Assoluto Immediato A Registro IncrementoSISTEMASALTO LOGICO- ARITMETICHE SPOSTAMENTO
3
Modi di indirizzamento Un modo di indirizzamento è un modo per esprimere un indirizzo di memoria NB: 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 indirizzamento imm(register) dove lindirizzo è dato dalla somma del valore immediato imm più il contenuto del registro register Esempio: lw $t0, 4($sp) (legge una word dallindirizzo $sp + 4) OPCODE MODO DI INDIRIZZAMENTO
4
Modi di Indirizzamento in SPIM
5
Modi di indirizzamento Lassembler 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 allindirizzo 0x10010104 assumendo: array = 0x10010000 e $t0 = 4 )
6
A REGISTRO (base register) Specifica un indirizzo tramite registro base, assumendo un offset 0. Lindirizzo è dato dal contenuto del base register Esempio: lb $t0,($a0)
7
A REGISTRO lb $t0,($a0) 10001101 00000010 $t0
8
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
9
IMMEDIATO lb $t0, 0x00 00 00 8D … 10001101 00000010 $t0
10
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
11
IMMEDIATO con spiazzamento lb $t0, 0x00 00 00 8D + 4 … 10010000 10010001 10010010 10010011 … + 100 10001101 00000010 $t0
12
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'espressione Esempio: lw $t0, 4($sp)
13
IMMEDIATO A REGISTRO Esempio: lw $t0, 4($sp) … 10010000 10010001 10010010 10010011 … + 100 10001101 00000010 $t0 10001101 $sp
14
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
15
SIMBOLICO … … operanA=10010001 00000010 $t0 10010000 10010001 10010010 10010011 Esempio: lw $t0, operandA
16
SIMBOLICO con spiazzamento Relocatable-symbol ± expression Specifica un indirizzo base tramite una etichetta, mentre loffset viene specificato tramite unespressione Lindirizzo è dato dalla somma dellindirizzo associato alletichetta con il risultato dellespressione Esempio: lw $t0, operandoB + 4
17
SIMBOLICO con spiazzamento Esempio: lw $t0, operandB+4 … … operandoB=10001101 00000010 $t0 10010000 10010001 10010010 10010011 + 100
18
SIMBOLICO con spiazzamento a registro Relocatable-symbol(index register) Specifica un indirizzo base tramite una etichetta, mentre loffset viene specificato tramite un registro indice Lindirizzo è dato dalla somma dellindirizzo associato alletichetta con il contenuto del registro indice. Esempio: lw $t0, array($t1)
19
SIMBOLICO con spiazzamento a registro … … array=10001100 00000010 $t0 10010000 10010001 10010010 10010011 + 00000101 $t1 00000101 Esempio: lw $t0, array($t1)
20
SIMBOLICO con spiazzamento a a spiazzamento a registro Relocatable-symbol ± expression(index register) Specifica un indirizzo base tramite una etichetta, mentre loffset viene specificato tramite un registro indice e unespressione Lindirizzo è dato dalla somma dellindirizzo associato alletichetta con il contenuto del registro indice e il risultato dell'espressione. Esempio: lw $t0, array + 4($t1)
21
SIMBOLICO con spiazzamento a a spaziamento a registro Esempio: lw $t0, array+4($t1) … … array=10001100 00000010 $t0 10010000 10010001 10010010 10010011 + 00000001 $t1 00000001 + 00000100
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.