Замена операций умножения и деления сдвигом

Тема в разделе "WASM.BEGINNERS", создана пользователем ALkab007, 17 янв 2006.

  1. ALkab007

    ALkab007 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2006
    Сообщения:
    1
    Адрес:
    Russia, Москва
    Всем привет и с прошедшими праздниками. Сказать по-честному - я совсем зеленый в ассемблере, но с первого знакомства он почему-то мне очень понравился..но это так - вступление...Если кто-нибудь решал эту задачу посоветуйте или помогите добрым словом (или кодом), как делить и умножать сдвигом на степень 2 я уже разобрался, а вот дальше пока не получается...Спасибо за внимание.
     
  2. leo

    leo Active Member

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

    1) Для умножения используются комбинации инструкций lea,shl,add\sub. Рекомендуемые варианты для констант 2..32 приведены например в манулах по оптимизации AMD Athlon и Athlon 64. Некоторые варианты для других чисел см. тут. Нужно иметь в виду, что умножение достаточно быстрая операция, поэтому заменять ее более чем двумя-тремя инструкциями обычно смысла не имеет.

    2) Для целочисленного деления на констатнту можно использовать комбинацию умножения и сдвига a/b=a*k/2^n. Подробнее см. в мануалах по оптимизации AMD или pentopt.pdf А.Фога
     
  3. Kozyr__

    Kozyr__ New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2005
    Сообщения:
    213
    Адрес:
    Ukraine
    Полезная вещь:

    ИНСТРУМЕНТЫ > Образовательные программы > Magic Divider by The Svin