Pergunta

O que exatamente esta instrução faz? Eu sei que ele tenta alinhar dados com um número múltiplo de um número específico, mas por que você precisaria fazer isso? Existe uma instrução equivalente em outros montadores?

Foi útil?

Solução

Você geralmente alinha os dados para obter melhor desempenho. Para a maioria dos processadores, o acesso à memória tem alguma penalidade ao não acessar limites específicos de bytes. Para outros montadores, muitas vezes há algum tipo de pseudo-op .align por esta. A maioria dos compiladores também alinha suas estruturas de dados (embora você possa desativá -lo para fins de depuração).

Veja também isso Entrada da Wikipedia.

Observe que os sistemas MIPS não emitidos podem até travar se você tentar acessar células de memória não alinhadas (ver aqui e aqui).

Outras dicas

Existe uma instrução equivalente em outros montadores?

MASM tem uma diretiva alinhada: http://msdn.microsoft.com/en-us/library/dwa9fwef(vs.80).aspx

Alinha tudo ao enésimo poder de dois. Não é uma instrução, é uma diretiva que será traduzida em instruções

Quanto ao seu uso, para Exampe:

As instruções MIPS32 têm sempre 32 bits de comprimento. Portanto, cada instrução deve começar em um limite de palavra. Adicionando uma diretiva .align antes do início do código, alinhe as coisas a 32 bits. Isso tem muitos benefícios, incluindo o fato de ser necessário apenas 1 acesso à memória para a busca das instruções e que provavelmente será benefício no cache de instruções.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top