Как в расширенном ASM обновить регистр% xmmN, используя указатель на ссылку на память указателя

Вот суть структуры, которую я имею:

struct {
__float128 *_SSE_register_data[4];
};

Суть расширенного ASM у меня проблемы с:

// push SSE register data onto stack
"lea -16(%%rsp), %%rsp;\r\n\t""movdqu %%xmm0, (%%rsp);\r\n\t"
// move in new SSE register data
// using rbx as a temporary register to get the pointer to pointer
"movq 8(%%rax), %%rbx;\r\n\t""movdqu (%%rbx), %%xmm0;\r\n\t"
// some more asm
// .....

// restore changed SSE register data from the stack
"lea 16(%%rsp), %%rsp;\r\n\t""movdqu (%%rsp), %%xmm0;\r\n\t"

Поэтому моя проблема связана с разделом «Переместить в новые данные регистра SSE», так как я получаю ошибку сегментации, когда этот раздел включен в мой ASM, а не когда он не включен.

Так что я сузил свою проблему, но я совсем не хорош в ASM и нуждаюсь в руководстве. Правильно ли написан код ASM для этой цели? И какие изменения мне нужно внести в средний раздел ASM, чтобы достичь цели загрузки новых данных из указателя в значение указателя?

Надеюсь, вопрос не слишком запутанный, не стесняйтесь изменить его для ясности. Я действительно хотел бы выяснить это сегодня вечером.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …