Почему инструкции по ассемблеру могут содержать умножения в инструкции «lea»?

Я работаю над очень низкоуровневой частью приложения, в которой производительность критична.

При исследовании сгенерированной сборки я заметил следующую инструкцию:

lea eax,[edx*8+8]

Я привык видеть дополнения при использовании ссылок на память (например, [edx+4]), но умножение вижу впервые.

  • Означает ли это, что процессор x86 может выполнять простые операции умножения в инструкции lea?
  • Влияет ли это умножение на количество циклов, необходимых для выполнения инструкции?
  • Ограничено ли умножение степенью двойки (я предполагаю, что это так)?

Заранее спасибо.

11
задан Mysticial 9 May 2012 в 08:23
поделиться