Modalità di Indirizzamento nell'Architettura dei Computer: Tipi e Compromessi
Come le Istruzioni Localizzano i Loro Operandi
Una modalità di indirizzamento definisce come il processore calcola l'indirizzo effettivo di un operando per un'istruzione. Determina flessibilità, velocità e dimensione del codice dell'istruzione.
Modalità di Indirizzamento Comuni
| Modalità | Descrizione | Esempio | Pro | Contro |
|---|---|---|---|---|
| Registro | Operando in registro CPU | ADD R1, R2 | Più veloce; codifica breve | Registri limitati |
| Immediato | Operando nell'istruzione | ADD R1, #42 | Nessun accesso memoria; costante | Gamma valori limitata |
| Diretto (Assoluto) | Indirizzo nell'istruzione | LOAD R1, [0x1000] | Semplice; variabili globali | Istruzione grande; indirizzo fisso |
| Indiretto | Indirizzo in memoria all'indirizzo dato | LOAD R1, [[R2]] | Puntatori; strutture dinamiche | Due accessi memoria; lento |
| Registro Indiretto | Indirizzo in registro | LOAD R1, [R2] | Puntatori; array; veloce | Pressione sui registri |
| Indicizzato | Registro base + registro indice/offset | LOAD R1, [R2 + R3] | Array, record; flessibile | Calcolo più complesso |
| Base/Spostamento | Registro base + offset costante | LOAD R1, [R2 + 8] | Campi strutture, frame stack | Dimensione offset limitata |
| Relativo (PC-Relativo) | PC + offset | BRANCH label | Codice indipendente dalla posizione | Gamma limitata |
| Stack | Stack pointer implicito (push/pop) | PUSH R1 | Efficiente collegamento subroutine | Solo LIFO |
Esempi di Architettura
- x86: Modalità ricche (base+indice+scala+spostamento).
- ARM/RISC-V: Architettura load/store; registro indiretto + offset; PC-relative.
- MIPS: Solo base+offset; semplice, istruzioni fisse a 32 bit.
Compromessi di Progettazione
- Ortogonalità: Tutte le modalità per tutte le istruzioni (CISC) vs. restritto (RISC).
- Densità del Codice: Modalità complesse accorciano il codice ma complicano la decodifica.
- Prestazioni: Modalità semplici si prestano meglio alla pipeline; modalità complesse possono richiedere cicli extra.
- Amichevolezza per il Compilatore: Modalità regolari facilitano la generazione del codice.
Le ISA moderne bilanciano espressività (indicizzato, PC-relative) con semplicità hardware.