как раз lea медленнее, но она не трогает флаги. не бывает одной инструкции лучше другой - бывает в этом контексте лучше эта инструкция, в другом другая, а в третьем все равно. обобщать невозможно.
Просто непривычно такое видеть) инструкция очень длинная, но на самом деле она как раз подходит для этого. lea - load effective address, команда заточенная на вычисления любых смещений, даже самых банальных -4.
т.е не меняя флаги, она теряет время на вычисление адреса
lea инструкция памяти, add sub не над ячейкой памяти - регистровая инструкция, регистровые инструкции всегда быстрее инструкций над памятью.
lea только с регистром работает. То, что там в синтаксисе скобочки - это указывание адреса, но процессор этот адрес не читает, он вычисляет смещение.
Обсуждают сегодня