Memory ';对齐';关于MIPS的说明

Memory ';对齐';关于MIPS的说明,memory,assembly,alignment,mips,instruction-set,Memory,Assembly,Alignment,Mips,Instruction Set,这个指令到底是做什么的?我知道它试图将数据与特定数字的倍数对齐,但为什么需要这样做?其他汇编程序中是否有等效的指令?您通常会对齐数据以获得更好的性能。对于大多数处理器,当不访问特定的字节边界时,内存访问会受到一些惩罚。对于其他汇编程序,通常会有某种类型的.align。大多数编译器也会对齐它们的数据结构(尽管您可以出于调试目的禁用它) 也看到这个 请注意,如果尝试访问未对齐的内存单元,非仿真MIPS系统甚至可能崩溃(请参阅和) 在其他汇编程序中是否有类似的指令 MASM有一个Align指令:它将所

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

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

也看到这个

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

在其他汇编程序中是否有类似的指令


MASM有一个Align指令:

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

关于其用途,例如:


mips32指令的长度始终为32位。因此,每条指令都应该从一个字边界开始。在代码开始之前添加.align指令,会将内容对齐到32位。这有很多好处,包括它只需要1次内存访问就可以获取指令,而且它可能对指令缓存有好处。

感谢外部链接中的额外说明!在堆栈上存储双浮点数怎么样?它需要8字节对齐,对吗?是的,双字节对齐到64位