Domanda

Cosa fa esattamente questa istruzione? So che tenta di allineare i dati con un multiplo di un numero specifico, ma perché dovresti farlo? Esiste un'istruzione equivalente in altri assemblatori?

È stato utile?

Soluzione

Normalmente allinea i dati per ottenere prestazioni migliori. Per la maggior parte dei processori, l'accesso alla memoria ha qualche penalità quando non si accede a limiti di byte specifici. Per altri assemblatori, esiste spesso una sorta di pseudo-op .align per questo. La maggior parte dei compilatori allinea anche le proprie strutture di dati (sebbene sia possibile disabilitarlo per scopi di debug).

Vedi anche questa voce di Wikipedia .

Tieni presente che i sistemi MIPS non emulati potrebbero persino arrestarsi in modo anomalo se provi ad accedere a celle di memoria non allineate (vedi qui e qui ).

Altri suggerimenti

  

Esiste un instruccion equivalente in altri assemblatori?

MASM ha una direttiva Align: http: // msdn.microsoft.com/en-us/library/dwa9fwef(VS.80).aspx

Allinea tutto all'ennesima potenza di due. Non è un'istruzione, è una direttiva che verrà tradotta in istruzioni

Per quanto riguarda il suo utilizzo, per esempio:

Le istruzioni mips32 sono sempre lunghe 32 bit. Quindi ogni istruzione dovrebbe iniziare su un confine di parola. L'aggiunta di una direttiva .align prima dell'inizio del codice, allinea le cose a 32 bit. Ciò ha molti vantaggi, incluso il fatto che richiede solo 1 accesso alla memoria per il recupero dell'istruzione e che probabilmente sarà vantaggioso nella cache dell'istruzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top