0988b24c

Дополнительная быстрая инструкции непосредственного умножения


Для эффективной индексации массивов Турбо Ассемблер обеспе- чивает специальную операцию непосредственного умножения. Инструк- ция FASTIMUL решает типичную проблему, возникающую при создании массива структур. Для процессора 8086 инструкция непосредственно- го умножения недоступна. Даже на более развитых процессорах умно- жение с использованием сдвигов и сложений выполняется в некоторых обстоятельствах существенно быстрее, чем стандартная непосредс- твенная инструкция IMUL. На основе текущего назначения процессора инструкция Турбо Ассемблера FASTIMUL выбирает между наиболее эф- фективной доступной последовательностью сдвигов и сложений и не- посредственной операцией IMUL текущего процессора (если она име- ется). Инструкция FASTIMUL имеет следующий синтаксис::

FASTIMUL регистр_приемник, регистр/память_источник, значение

Данная инструкция очень напоминает тернарную операцию IMUL, доступную на процессорах 80186, 80286 и 80386. Регистр-приемник - это регистр размером в слово (или двойное слово при работе на процессора 80386). "Регистр/память_источник" - это регистр или адрес в памяти, который должен соответствовать размеру приемника. "Значение" - это фиксированная константа со знаком (множитель).

Инструкция FASTIMUL использует для выполнения своей функции комбинацию инструкций IMUL, MOV, NEG, SHL, ADD и SUB. При этом содержимое регистра-источника (или адреса памяти) теряется. Флаги процессора не изменяются.



Содержание раздела