在 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.
...
}
}
最佳答案
如果您愿意多烧掉 16 个字节,您可以在运行时自己进行对齐。除此之外,我不会知道。
关于stack - 在 D 中对齐堆栈变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375165/