Я работаю над очень низким уровнем части приложения, в котором производительность имеет решающее значение.Почему инструкции по сборке содержат умножения в инструкции «lea»?
При исследовании сгенерированного сборки, я заметил следующую инструкцию:
lea eax,[edx*8+8]
Я привык видеть дополнения при использовании ссылки на память (например, [EDX + 4]), но это первый раз, когда я вижу умножение.
- Означает ли это, что процессор x86 может выполнять простые умножения в инструкции lea?
- Это умножение влияет на количество циклов, необходимых для выполнения инструкции?
- Является ли умножение ограничено степенями 2 (я бы предположил, что это так)?
Заранее спасибо.
Обратите внимание, как это умножается на мощность двух. – Mysticial
См. Также [Что предназначено для инструкции LEA?] (Https://stackoverflow.com/questions/1658294/whats-the-purpose-of-the-lea-instruction) для более общих вещей об использовании его для других вещей чем строго адресные вычисления. –