Modo di IndirizzamentoDescrizioneEsempio
ImplicitoGli operandi sono predefiniti dall’istruzione stessa. Non è necessario specificarli esplicitamente.ret (l’istruzione “return” utilizza automaticamente il valore nel registro di ritorno, senza bisogno di specificarlo)
ImmediatoL’operando è un valore costante fornito direttamente nell’istruzione, senza riferimento a un indirizzo di memoria.addi x5, x0, 10 (somma il valore costante 10 al contenuto di x2 e memorizza il risultato in x1)
A registroGli operandi sono registri, senza l’uso di memoria. L’istruzione specifica direttamente quali registri sono utilizzati.add x1, x2, x3 (somma i valori nei registri x2 e x3 e memorizza il risultato in x1)
Con indirizzo senza offsetL’indirizzo di memoria dell’operando è specificato esplicitamente nell’istruzione.lw x1, 0(x2) (carica il valore da memoria all’indirizzo contenuto in x2 e lo memorizza in x1)
Con indirizzo + offsetAll’indirizzo di memoria si aggiunge un offset immediato: l’indirizzo da cui prendere il dato sarà indirizzo + offsetlw x1, 100(x2) (carica il valore da memoria all’indirizzo x2 + 100 e lo memorizza in x1)
Relativo al PC (Program Counter)L’indirizzo dell’operando è contenuto in un registro. L’istruzione utilizza il contenuto del registro come indirizzo di memoria.beq x5, x6, end: se x5 e x6 sono uguali, salta all’etichetta end, che si troverà a un’offset immediato (calcolato dall’assemblatore) dal Program Counter.

N.B.: (x) = contenuto della memoria all'indirizzo x