2009-06-20 60 views
7

这条指令到底做了什么?我知道它试图将数据与特定数字的倍数对齐,但为什么你需要这样做呢?其他汇编器中是否有等效的指令?MIPS上的'align'指令

回答

9

您通常会调整数据以获得更好的性能。对于大多数处理器来说,不访问特定字节边界时,存储器访问会受到一些惩罚对于其他汇编程序,为此,通常会有某种pseudo-op.align。大多数编译器也调整它们的数据结构(尽管可以为了调试目的而禁用它)。

另请参阅此Wikipedia entry

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

+0

感谢您在外部链接中的额外说明! – 2009-06-21 04:44:08

0

它对准一切的两个n次幂。它不是一个指令,它的一个指令,将被翻译成指令

至于它的使用情况,对exampe:

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

+0

如何在堆栈上存储双浮点数?它需要8个字节对齐吗? – 2017-02-03 12:36:44