Sto seguendo questo corso e sto davvero cercando di capire il concetto della direttiva .align
.Informazioni sull'assemblaggio MIPS .ALIGN e indirizzamento di memoria
Ecco un esempio, che non riuscivo a capire:
So che all'interno del segmento di dati, ci sono gli indirizzi, a partire da 0x10010000,0x10010020, ecc.
E so che all'interno di ciascun indirizzo ci sono 8 campi di memoria, ognuno con 32 bit.
Ora, ciò che non capisco è, come e perché var2
all'interno dell'indirizzo 0x10010010? str1
si trova nell'indirizzo 0x10010003 perché abbiamo riservato 3 bit per lo var1
.
L'ultima cosa è, che cosa esattamente la direttiva .align' doing? when I tested it in Mars4, it only shifted the data into the next memory field when I used
align 3` e fino, ma io in realtà non capisco.
Mi dispiace se questo è molto confuso ragazzi, sono un po 'disperato qui.
Stavo scrivendo la mia risposta al telefono mentre non c'era nessuno ... il tuo avrebbe ovviato alla necessità di un altro. – gnometorule
Grazie a tutti per le vostre risposte! Domanda: in che modo 0x10010010 è un multiplo di 4? – Sobiaholic
0x10010010 = 2^28 + 2^16 + 2^4, che è una moltiplicazione di 4. Se il calcolo non ha senso per te, ti preghiamo di leggere di nuovo sui numeri esadecimali. – gnometorule