0

我正在编写项目以使用 x64 程序集进行学习。我正在使用 nasm 编译器。我知道 xmm 寄存器可以存储 4 x 32 位或 2x64 位。例如,我想知道如何将 4 个浮点值(32 位)放入 xmm1 中。我的函数有标题curve(float * x, float * y, int a, int b),x 是指向 5 元素数组的指针。我正在寻找一些信息,但我仍然不知道如何正确地做到这一点。提前感谢您的帮助!(ps。如果您有任何教程,包括有关 sse 的信息,那将非常有帮助)

4

1 回答 1

2

您可以使用 movdqa、movdqu、movaps、movups、movapd、movupd 指令之一将值从内存加载到 128 位 SSE 寄存器 (xmm)。movdqa、movaps、movapd 需要 16 字节对齐的内存访问(并且速度更快)。

顺便说一句,使用 SIMD 一次只做一点需要大量代码更改。更好的选择是一次做 4 个(因为 SIMD 有 4 个单精度浮点通道)。然后你可以(或多或少)用相同的向量指令替换每个常规指令。

于 2013-01-02T17:14:55.037 回答