我知道一些像Intel x86这样的小端架构允许不对齐的数据访问。当然,直觉上讲,不对齐并不是很聪明,因为它可能会降低性能(对于现代芯片来说并不一定如此处所辩护)。因此,未对齐的数据访问可能并不好,但在某些架构中是合法的。
另一方面,许多Google图书中自然地谈论了未对齐的指令。因此,我的问题是:
1. 某些体系结构是否允许未对齐的指令? 2. 任何大端架构是否要求对齐?我理解只有小端处理器可能出现不对齐。
我对此正确吗?
我希望您能帮助我澄清这些问题。非常感谢!
直到最近,我认为未对齐的指令也适用相同的规则:如果给定处理器可以处理数据的不对齐,那么什么可以阻止它对代码执行相同的操作呢?然而,在 Linda Null 的书中(这里),明确说明了相反的情况:
通常,现实中的妥协是使用两到三个指令长度,这提供了易于区分和简单解码的位模式。指令长度还必须与机器上的字长进行比较。如果指令长度恰好等于字长,则存储在主存储器中时指令完全对齐。出于寻址原因,指令始终需要按照字对齐。 因此,大小为实际字长一半、四分之一、双倍或三倍的指令可能会浪费空间。可变长度指令显然不是相同大小,需要按字对齐,从而导致空间损失。另一方面,许多Google图书中自然地谈论了未对齐的指令。因此,我的问题是:
1. 某些体系结构是否允许未对齐的指令? 2. 任何大端架构是否要求对齐?我理解只有小端处理器可能出现不对齐。
我对此正确吗?
我希望您能帮助我澄清这些问题。非常感谢!
bl
)只需要对齐到16位即可。 - fuz