Как мне сказали, его нужно заменить эквивалетным MMX оператором, а он, pmaddwd, дает увеличение кол-ва ненужных инструкций связанных с распаковкой данных? Или может все это зависит от контекта применения? Каким MMX оператором его можно заменить? Почему он не рекомендуется к использованию?
а почему бы не спросить того, кто посоветовал заменить pmaddwd - помоему это MMX инструкция и интересно что за эквивалентный ему есть оператор
очевидно все кроется в названии PMADDWD mm, mm/m64 The PMADDWD (Packed Multiply and Add) instruction multiplies the four signed words of the destination operand by the four signed words of the source operand. The two high-order words are summed and stored in the upper doubleword of the destination operand, and the two low-order words are summed and stored in the lower doubleword of the destination operand.
Задание в том, чтобы найти эквивалентную PMADDWD инструкцию на MMX. Поэтому спросить у того, кто посоветовал заменить, не могу.
PMADDWD - это и есть инструкция MMX. Эквивалентной (читай дублирующей) команды MMX нету. С трудом себе представляю проц, в системе команд которого была бы куча команд делающих одно и то же.
cppasm зачем ты говоришь очевидные вещи? Ведь итак понятно, о чем идет речь. Нужно найти инструкции, которые в конечном итоге приводили бы к тому же результату, что и PMADDWD. Если таковых инструкций в MMX нет, то можно обойтись без него. И объяснить, в чем же неудобство использования PMADDWD.
А зачем в каждом посте менять задание? Что такое оператор MMX науке вообще не известно. Заменить можно умножением и сложением. Неудобство может быть в следующем: src [<x3> <x2> <x1> <x0>] dst [<y3> <y2> <y1> <y0>] pmaddwd dst,src dst [<x3*y3+x2*y2> <x1*y1+x0*y0>] На входе у нас x0, x1, x2, x3, y0, y1, y2, y3 - 16 бит x0*y0 -> 16bit*16bit -> 32bit результат x1*y1 -> 16bit*16bit -> 32bit результат x0*y0+x1*y1 -> 32bit+32bit -> 33bit И того результат 33 бита, а пишется в 32битную часть MMX регистра, при этом может произойти переполнение. Правда насколько это проблема - я не знаю. Никогда не напрягало, если об этом знать
cppasm Проблема с переполнением там только в случае, если все 4 операнда, которые перемножаются и складываются, равны -8000h.