Is Int64 Aligned to 4 Bytes or 8 Bytes on a 32-bit Architecture?

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

本文讨论了CLI Spec(ECMA-335)关于基元类型对齐规则的描述,验证了8字节数据类型在x86/x64机器上的对齐字节,并提出了问题。引用了相关说法和实验结果。

🎯

关键要点

  • CLI Spec(ECMA-335)描述了基元类型的对齐规则。
  • 8字节数据类型在x86/x64机器上的对齐字节分别为4字节和8字节。
  • 1字节、2字节和4字节数据在相应的边界上对齐。
  • 8字节数据在底层硬件要求的边界上对齐,以便进行原子访问。
  • 在64位机器上模拟32位平台时,需将PlatformTarget属性设置为x86。
  • 演示程序中定义了一个包含byte和ulong字段的结构体Record。
  • 验证程序输出显示当前环境与CLI Spec描述一致,但ulong字段的对齐长度为8字节而非4字节。
  • 尚未找到关于ulong类型对齐规则的权威答案,可能是对CLI Spec的解读或验证程序存在问题。
  • 进行了补充实验,证明ulong类型的对齐规则与CLI Spec一致。
  • 在x64和x86平台上,long类型的对齐规则分别为8字节和4字节,但在x86上某些断言不能保证成立。
➡️

继续阅读