Я начал изучать команды SIMD, используя смесь кода c и встроенной сборки gcc. Я пытаюсь понять, как я могу добавить значения из структуры в плавающий указатель (xmm0). Я не могу понять, как правильно это сделать.
Я динамически выделил одну структуру и назвал ее tmp. Теперь я хочу добавить значения struct к плавающему указателю, используя только инструкции SSE2.
#include <stdio.h>
#include <stdlib.h>
struct Test{
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
} test;
int main()
{
struct Test *tmp = malloc(sizeof(test));
tmp->a = 10;
tmp->b = 2;
tmp->c = 3;
tmp->d = 4;
asm ( "movapd [tmp], %%xmm0;"
);
free(tmp);
return 0;
}
После компиляции этого кода я получаю сообщение об ошибке:
"Ошибка: неверный символ '[' начальный операнд 1` [tmp] '"
Я хотел бы знать, что я делаю неправильно и как вставить значения структуры в плавающий указатель.