in assembly non esistono i tipi.

vettori

vettore

  • sequenza di n elementi di dimensioni uguali
  • consecutivi in memoria
  • indirizzabili per indice (da 0 a N-1)
  • dimensione totale = N * dim. elemento

SI definiscono staticamente nella sezione data usando un’etichetta (indirizzo del primo elemento del vettore)

Per indirizzare l’elemento i-esimo, bisogna aggiungere l’offset i * dimensione elemento.

vettori di byte in memoria
  • vettore di byte (valori da 0 a 255) label1: .byte 1,2,3,4
  • vettore di caratteri (byte) seguiti da \0 (carattere codificato con zero, 0x0) label2: .asciiz "sopra la panca" - ogni lettera occupa un byte
vettori di word

numeri a 32 bit in CA2 codificati in 4 byte

label13: .word 1,2,3,4,5,6

per mettere 100 valori a 0: label4: .word 0:100

il processore MIPS permette l’ordinamento dei byte di una word in due modi:

  • Big-endian - byte memorizzati dal MSB al LSB
  • Little-endian - dal LSB al MSB

L’ordine delle word è lo stesso, ma l’insieme dei singoli byte è specchiato.

cicli

due stili di scansione di un vettore:

  1. scansione per indice
procontro
comoda se l’indice serve
per controlli o altro
convertire ogni volta
l’indice nel corrispondente
offset in byte
l’incremento dell’indice non
dipende dalla dimensione

degli elementi
comoda se il vettore è allocato
staticamente in .data
  1. scansione per puntatore
procontro
si lavora direttamente su
indirizzi di memoria
non si ha l’indice
dell’elemento
meno calcoli nel ciclol’incremento del puntatore
dipende dalla dimensione degli
elementi
bisogna calcolare l’indirizzo
successivo all’ultimo elemento

matrici

una matrice MxN è una successione di M vettori, ciascuno di N elementi. (la struttura bidimensionale è mentale, in realtà è solo una lunga serie di bit)

  • numero di elementi totali = M x N
  • dimensione totale in byte = M x N x dimensione elemento

Si definisce staticamente come un vettore contenente M x N elementi uguali Matrice: .word 0:91 - spazio per 7 x 13

trovare la posizione di un elemento:

matrici 3D