Работа с умножением
Например, в коде, где ищется последняя секция, очень часто встречается следующее (в EAX находится количество секций - 1):
mov ecx,28h ; 5 байтов mul ecx ; 2 байта
И это сохраняет результат в EAX, правильно? Ладно, у нас есть гораздо более лучший путь сделать это с помощью всего лишь одной инструкции:
imul eax,eax,28h ; 3 байта
IMUL сохраняет в первом регистре результат, который получился с помощью умножения второго регистра с третьим операндом, который в данном случае был непосредственным значением. Хех, мы сохранили 4 байта, заменив две инструкции на одну!