matrix = [
[1,2,3]
[4,5,6]
[7,8,9]
]
Dato che in assembly lo spazio di memoria è lineare, le matrici (come le altre struttura dati) non possono esistere fisicamente, ma sono da pensare come un’array di dati su cui è definita una procedura per ottenere l’elemento agli indici x e y corrispondenti come se fosse una matrice.
.data
matrice: .word 1, 2, 3, 4, 5, 6, 7, 8, 9
width: .word 3
.text
li t0, 2 # indice x
li t1, 1 # indice y
li t2, 4 # carico 4 in t2
lw t3, width # carico la larghezza della matrice in t3
mul t4, t3, t1 # t4 = larghezza * indice y
add t4, t4, t0 # t4 = larghezza * indice y + indice x
mul t4, t4, t2 # t4 = 4 * (larghezza * indice y + indice x)
la t5, matrice # carico l'indirizzo base della matrice in t5
add t4, t4, t5 # incremento t4 di t5
lw t6, (t4) # carico il valore memorizzato all'indirizzo di memoria t4 in t6