Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Chiarimenti esercitazione giovedì 15/3 -- .align

L
LucaStravato (1360 points)
10 31 38
in Programmazione in Assembly by (1.4k points)
recategorized by

Salve, rivedendo l esercitazione fatta in aula giovedi 15/03, ( quella in cui si legge e stampa un vettore di interi separati da spazio in ordine opposto ) non riesco a capire il motivo per cui si utilizza .align 2 ( riga 8 del .asm http://twiki.di.uniroma1.it/pub/Architetture2/MZ/AA17_18/DiarioDelleEsercitazioni/vettore.asm ) sia in questo caso, ma anche in generale trovo difficile comprendere il suo significato. So che .align n allinea il prossimo dato ad un indirizzo multiplo di 2^n, ma non riesco a trovare un esempio chiaro da farmi capire il vero utilizzo pratico dell .align .

Grazie  

465 views
closed with the note: answered

1 Answer

Best answer
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
selected by

Quando si fa load word (lw) l'indirizzo deve essere un multiplo di 4.

Se si definiscono dei dati e alcuni di questi possono essere di dimensioni non multiple di 4, i dati definiti successivamente possono non essere allineati.

Con la direttiva .align 2 ci si assicura che tutte le strutture in memoria da quel punto in poi siano allineate a un indirizzo multiplo di 4.

Se (senza direttiva .align) avessi definito le stringhe prima della zona del vettore avrei potuto avere un vettore con elementi non allineati a seconda del numero di caratteri delle stringhe, generando in esecuzione degli errori difficili da riconoscere.