原文 对栈与16
字节对齐的64
位编译中,float8(AVX,32
字节对齐)尤其如此.注意,理论上AVX
也可以在32
位中使用,但目前dmd
既不公开内联
内置函数也不公开YMM0-YMM7
,因此不能在那里遇到这个问题.
据我所知,gcc,icc,llvm
等主要编译器支持对齐正确堆栈对齐>=16
的任何内容.因此,这也应根据C互操作
调查.
公平地说,对于DMD
中栈变量,简单忽略任意对齐
.
不,如果对齐<=
堆栈对齐,这不是真的.
好吧,这很烦人.损坏的代码:
而,这修复:
问题,阻止了这个 在有4字节
栈对齐的Win32
上,以下断言多数都会失败: