7

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

4

3 回答 3

9

您通常对齐数据以获得更好的性能。对于大多数处理器,内存访问在不访问特定字节边界时会受到一些惩罚。对于其他汇编程序,通常有某种伪操作 .align。大多数编译器还对齐它们的数据结构(尽管您可以出于调试目的禁​​用它)。

另请参阅此Wikipedia 条目

请注意,如果您尝试访问未对齐的内存单元,非仿真 MIPS 系统甚至可能崩溃(请参阅此处此处)。

于 2009-06-20T06:19:36.367 回答
1

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

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

于 2009-06-20T06:45:29.110 回答
0

它将所有内容与 2 的 n 次方对齐。它不是指令,而是将被翻译成指令的指令

至于它的用法,例如:

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

于 2009-06-20T22:04:43.423 回答