(я знаю и предпочитаю синтаксис Intel / MASM, поэтому буду использовать его. Обратите внимание, что порядок операндов отличается от AT & T.)
Ваша инструкция на самом деле представляет собой два операнда imul
, который в синтаксисе Intel:
imul eax, DWORD PTR [ebp + ebx*4 + 0FFFFFFD4h]
Где eax
- операнд-адресат, а ячейка памяти - операнд-источник. Двухоперанд imul
выполняет умножение со знаком (с дополнением до двух) операндов источника и назначения и сохраняет результат в месте назначения.
Эта инструкция умножает регистр на целое число в массиве. Скорее всего, это появляется в цикле, а массив является локальной переменной.
Три операнда imul
инструкция:
imul dest, source1, source2
Операнд source1
(ячейка памяти или регистр) умножается на операнд source2
(8-битное или 16/32-битное целое число), а результат сохраняется в операнде dest
(16-, 32- или 64-разрядный регистр).