Описание тега xmm
1
ответ
Ошибки при вставке регистров xmm в стек
Я пытаюсь вставить регистр xmm в стек в коде x86_64 C, используя встроенную сборку в стиле GCC. Я посмотрел на ответ на этот вопрос и использую этот код int main(void) { asm volatile("subq 16, %rsp"); asm volatile("movdqu xmm0, xmmword ptr (%rsp)");…
18 мар '15 в 01:56
2
ответа
gcc -O3 optimize:: xmm0 зарегистрироваться?
(Я плохо говорю по-английски.. пожалуйста, поймите ТТ) Я писал функцию vsprintf для использования моего ядра 64-битной ОС (написано на C) и проверял, хорошо ли она работает в Visual Studio и Cygwin gcc. Затем я установил ядро и запустил... но ядро…
27 окт '13 в 06:26
2
ответа
Как переместить значение константы с плавающей точкой в регистр xmm?
Это единственный способ переместить значение в регистр xmm, сначала переместив значение в регистр целых чисел, не знаю, как они называются, а затем в регистр xmm, например mov [eax], (float)1000 ; store to memory movss xmm1,[eax] ; reload или же mov…
22 дек '17 в 19:21
1
ответ
Как вы перемещаете 128-битные значения между регистрами XMM?
Казалось бы, тривиальная проблема в сборке: я хочу скопировать весь регистр XMM0 в XMM3. я пробовал movdq xmm3, xmm0 но MOVDQ нельзя использовать для перемещения значений между двумя регистрами XMM. Что мне делать вместо этого?
29 дек '11 в 17:58
1
ответ
Автоматически генерировать имя регистра xmm в газовом макросе?
Я хотел бы написать газовый макрос для генерации кода, содержащего различные инструкции movdqu, в регистр xmm в зависимости от параметра n. .macro xxmov n, p1 .if (\n == 1) xor %eax, %eax .endif .if (\n - 1) xxmov (\n - 1), \p1 .endif movdqu ((\n - …
25 авг '11 в 02:15
1
ответ
Сохранение регистра XMM перед вызовом функции
Требуется ли сохранять / помещать любые регистры XMM в стек перед вызовом функции сборки? Потому что наблюдаю проблему сбоя в моем коде с режимом выпуска для 64-битной разработки (с использованием AVX2). В режиме отладки работает нормально. Я попыта…
19 июн '14 в 05:44
0
ответов
Максимально возможное число для регистра XMM
Одно сомнение Я видел, что 128-битные регистры xmm поддерживают как минимум два 64-битных числа с плавающей запятой двойной точности. В Руководстве Intel говорится, что максимальное число составляет 1,79 × 10308, но я не знаю, как организовать конте…
08 июн '13 в 21:11
1
ответ
Как обнулить определенный байт в регистре XMM?
Я хочу знать, есть ли простой эффективный способ сделать следующее дано: sample db 'hello worldxxxxx' sample_len db 11 Я бы хотел: movdqa xmm0, [sample] ; here I want to put a zero in the 11th byte of xmm0 (11 coming from [sample_len]. ; I don't wan…
28 сен '16 в 00:38
1
ответ
Возврат __m128d из процедуры MASM вызывающей стороне C
Я портирую функцию из встроенной сборки в MASM в Visual Studio 2013, и у меня возникают проблемы с получением возвращаемого значения. Вот вызывающая сторона C и прототип функции сборки: extern "C" void AbsMax(__m128d* samples, int len, __m128d* pRes…
09 дек '14 в 19:18
2
ответа
Сравнивая вектор xmmX
Допустим, вы загрузили вектор xmm1 с четырьмя плавающими точками одинарной точности {1.5, 1.5, 1.5, 1.5} и xmm2 с одинаковыми точками, поэтому xmm1 == xmm2. Теперь вы хотите сравнить их, так что вы пишете в сборке: movaps %xmm1, %xmm2 cmpeqps %xmm0,…
10 мар '15 в 18:53
2
ответа
Неэффективная процедура встроенной сборки в Delphi с использованием SSE2
У меня есть простая операция с плавающей точкой, которая всегда выполняется дважды. Поэтому я попытался перевести его на SSE, но он просто не удался. Язык высокого уровня - Delphi, так как он не поддерживает функции Intrinsics, я должен написать все…
26 окт '11 в 21:26
2
ответа
Добавление двух 4-векторов с sse с помощью указателей
Этот кусок кода (удваивающий 4-вектор) работает: __declspec(align(16)) struct vec4 { float a[4]; }; int main() { vec4 c; c.a[0]=2; c.a[1]=0; c.a[2]=0; c.a[3]=0; __asm { movaps xmm1, c addps xmm1, xmm1 movaps c, xmm1 } } Но эта часть (делает то же са…
14 июл '14 в 12:33
2
ответа
Могут ли регистры XMM использоваться для выполнения любых 128-битных целочисленных вычислений?
Мое впечатление определенно нет, но, может быть, есть хитрый трюк? Благодарю.
18 июл '11 в 19:27
3
ответа
Как считать от 0 до 18446744073709551616(2^64) в сборке x86?
Мне нужно считать от 0 до 18446744073709551616(2^64) в цикле. Могу ли я использовать xmm regiters? например, что-то вроде этого MOV XMM0,0 LABEL1: INC XMM0 CMP XMM0,18446744073709551616;(2^64)=18446744073709551616 JNE LABEL1 Если нет, что мне делать?
29 авг '13 в 18:46
0
ответов
Как найти максимальное значение XMM
Мне нужно найти максимальное значение в регистре xmm. Теперь в коде, который я пишу, есть этот раздел: comiss xmm2,xmm4 ; if(R[i*M+j]>Rmax) ja UpateRmax Теперь это скалярная версия. Я пытаюсь оптимизировать упакованную версию, но не могу понять, …
08 июн '17 в 16:00
2
ответа
Вставить регистр XMM в стек
Есть ли способ поместить упакованное целое число двойного слова из регистра XMM в стек? а потом попсовывать обратно когда нужно? В идеале я ищу что-то вроде PUSH или POP для регистров общего назначения, я проверил руководства Intel, но я пропустил к…
15 апр '12 в 12:13
2
ответа
Инструкция по сборке "dec" для XMM
В настоящее время я передаю внешний параметр из C в ASM, используя следующее: myFunction proc myVar:qword public myFunction movdqu xmm3,oword ptr myVar myFunction endp В конечном счете, я хочу что-то похожее на приведенное ниже, но сначала нужно опр…
19 мар '15 в 04:04
1
ответ
Сборка - загрузить регистр xmm в 32 регистра
У меня есть результат в xmm0. Это одно 32-битное плавающее число. Я пытаюсь загрузить его в 32-разрядный регистр EDX movss dword ptr [result], xmm0 mov eax, dword ptr [result] И у меня странный номер в eax... Я думал, что это адрес, но это не потому…
29 авг '15 в 18:40
2
ответа
Есть ли способ увеличить значение в регистре xmm?
Мне было интересно, есть ли способ увеличить значение в регистре xmm или вы можете только переместить значение в один? Я имею в виду, что вы можете сделать это: inc eax или вот так: inc [ebp+7F00F000] Есть ли способ сделать то же самое с XMM? Я пыта…
10 июл '16 в 17:11
3
ответа
Как обмениваться значениями между регистрами XMM?
Существует ли команда x86 или две для обмена значениями между регистрами XMM; похож на инструкцию XCHG? Нельзя использовать память, скретч-регистр или копию XOR.
18 июн '13 в 05:51