关于MIPS的“对齐”指令

时间:2009-06-20 06:17:12

标签: memory assembly alignment mips instruction-set

这条指令到底是做什么的?我知道它会尝试将数据与特定数字的倍数对齐,但为什么需要这样做呢?其他汇编程序中是否有等效的指令?

3 个答案:

答案 0 :(得分:9)

您通常会调整数据以获得更好的效果。对于大多数处理器,当不访问特定字节边界时,内存访问会有一些损失。对于其他汇编程序,通常会有某种pseudo-op .align。大多数编译器也会调整其数据结构(尽管您可以将其禁用以进行调试)。

另见Wikipedia entry

请注意,如果您尝试访问未对齐的内存单元格,非模拟MIPS系统甚至可能会崩溃(请参阅herehere)。

答案 1 :(得分:1)

其他汇编程序中是否有等效指令?

MASM有一个Align指令:http://msdn.microsoft.com/en-us/library/dwa9fwef(VS.80).aspx

答案 2 :(得分:0)

它将一切都与二的n次幂对齐。它不是一个指令,它是一个将被翻译成指令的指令

至于它的用法,例如:

mips32指令总是32位长。所以每条指令都应该从单词边界开始。在代码开始之前添加.align指令,将事物与32位对齐。这有很多好处,包括它只需要1次内存访问来获取指令,并且它可能对指令缓存有益。