stack - 在 D 中对齐堆栈变量

标签 stack alignment d

在 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/

相关文章:

c++ - 扩展 std::unordered_set<> 以与 std::stack<> 一起使用

Java - 我正在将堆栈链表修改为队列链表,但我的出队方法仍然表现得像 pop

Android:将元素放在另一个元素下方并在屏幕底部对齐

silverlight - WrapPanel 内容对齐

c# - 在堆栈上创建固定大小的数组

java - 堆栈中的内存分配和局部变量的删除

html - 如何在一个 td 中对齐多个文本行

mysql - 使 MySQL 客户端程序线程安全?

d - 什么是纯变量?

linux - 我如何让 gdb 在 linux 下使用 D 程序?