0

CLR的Mono实现中数组对齐的情况是什么?它们是否保证在所有平台上自然对齐?如果不是,在哪些平台上假设 CLR 管理的数组自然对齐是安全的?

关于 SO 有两个相关的问题:

我正在寻找有关 Mono 框架的类似信息。

4

1 回答 1

2

对于 long 和 double 数组,我们保证数组元素在 64 位平台上自然对齐。

在 32 位平台上,它们也恰好是自然对齐的,这不太可能改变,因为一些 32 位架构也需要双精度对齐,我们将在它们上保持代码一致。

请注意,您希望您的库支持从数组中的任何索引开始的处理,并且由于您使用的是需要 16 字节对齐的 SIMD 指令,因此您始终需要在数据的开始/结束处检查并进行标量处理。

至于结构/类中的 long 和 double 字段,在所有 32 位系统上都不能保证对齐,它取决于 ABI,但至少是 32 位。

于 2013-10-07T09:30:26.887 回答