在D语言中,您可以使用align
关键字对结构体/类成员进行对齐,例如:
struct Vec4 { align(16) float[4] elems; }
但是,似乎在堆栈上您无法执行相同的操作:
void foo()
{
align(16) float[4] vec; // error: found 'align' instead of statement
}
有没有一种方法可以对齐堆栈上的数据?特别地,我想创建一个16字节对齐的浮点数数组,以使用 movaps
加载到 XMM 寄存器中,该方法比使用 movups
快得多。
例如:
void foo()
{
float[4] v = [1.0f, 2.0f, 3.0f, 4.0f];
asm
{
movaps XMM0, v; // v must be 16-byte aligned for this to work.
...
}
}
movaps
而不是movups
。 - Peter Alexander