Вот суть структуры, которую я имею:
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, чтобы достичь цели загрузки новых данных из указателя в значение указателя?
Надеюсь, вопрос не слишком запутанный, не стесняйтесь изменить его для ясности. Я действительно хотел бы выяснить это сегодня вечером.
Задача ещё не решена.
Других решений пока нет …