Добавить 32-битные числа с плавающей запятой в регистры eax/ecx?
У меня есть пара 32-битных чисел, хранящихся в eax и ecx. Могу ли я напрямую загрузить их в FPU для работы с ними без предварительного сохранения в памяти? Это значительно упростит некоторый код компилятора, но fld
Кажется, может работать только с памятью.
1 ответ
Решение
Нет, ты не можешь этого сделать. Что касается генерации кода, вы можете моделировать fld r32
например, достаточно легко выполнить следующую последовательность (оптимизировано по размеру;)):
push r32
fld [esp]
pop r32
Рассмотрите возможность использования SSE, если оно доступно, которое предлагает прямые перемещения GPR-XMM с использованием movd
инструкция. Добавление двух регистров может выглядеть примерно так:
movd xmm0, eax
movd xmm1, ecx
addss xmm0, xmm1
Если вам нужен результат в георадаре, вы можете переместить его обратно, используя другой movd
,