Умножение с использованием ММХ

Тема в разделе "WASM.BEGINNERS", создана пользователем kurt84, 27 окт 2005.

  1. kurt84

    kurt84 New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    1
    Адрес:
    Russia
    Подскажите пожалуйста, как перемножить:



    в мм0 и мм1 занесены по 2 DWORDa, т.е.

    мм0: DWORD01 DWORD02

    мм1: DWORD11 DWORD12



    Нужно перемножить их так, чтобы в мм2 получилось:



    мм2: DWORD01*DWORD11 DWORD02*DWORD12



    Пытался найти нечто подобное в интеловском мануале, но безуспешно, и из-за этого приходится выгружать данные в переменную, оттуда в регистры о.н., там перемножать, и потом обратно пересылать в ММХ регистры. Медленновато получается...
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    > "Пытался найти нечто подобное в интеловском мануале, но безуспешно"

    Ну ес-но, т.к. непосредственной операции перемножения двух dword'ов на MMX регистрах нет, потому что в общем случае DWORD*DWORD = QWORD 64 бит. А посему есть SSE2 инструкция PMULUDQ, которая перемножает младшие unsigned dword'ы и сохраняет результат как qword. А в наборе MMX Technology есть операция PMADDWD. Ее можно использовать для перемножения двух unsigned dword, если числа лежат в диапазоне 0..65535 (старшие ворды = 0)
     
  3. tar4

    tar4 New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    43
    А каким отладчиком можно воспользоваться для отладки кода
    при использовании расширенных инструкций ММХ типа pmuludq, paddq в ХР (32 бит). Fasm их понимает, а отладчик OllyDbg - нет.
     
  4. rozarom

    rozarom New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2011
    Сообщения:
    56
    что никто не знает?
     
  5. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Есть pmulld, но это инструкция SSE4.1 и работает только с xmm регистрами. Перемножает 4 пары dword`ов со знаком.
     
  6. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    tar4
    Для олли есть плагины заменяющие оллин дизасм. Я такой помню только один - FullDisasm.
    Я по-моему про него уже не раз говорил.