【问题标题】:'align' instruction on MIPSMIPS 上的“对齐”指令
【发布时间】:2016-10-06 01:37:22
【问题描述】:

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

【问题讨论】:

    标签: memory assembly alignment mips instruction-set


    【解决方案1】:

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

    另见Wikipedia entry

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

    【讨论】:

    • 感谢外部链接中的额外说明!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      关于它的用法,例如:

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

      【讨论】:

      • 在堆栈上存储双浮点数怎么样?它需要 8 字节对齐对吗?
      • 是的,双精度对齐到 64 位
      猜你喜欢
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2019-04-26
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多