Dlaczego instrukcje montażu mogą zawierać mnożenia w instrukcji „lea”?

Pracuję nad bardzo niską częścią aplikacji, w której wydajność jest krytyczna.

Podczas badania wygenerowanego zespołu zauważyłem następującą instrukcję:

<code>lea eax,[edx*8+8]
</code>

Przyzwyczaiłem się do oglądania dodatków podczas korzystania z odniesień do pamięci (np. [Edx + 4]), ale po raz pierwszy widzę mnożenie.

Czy to oznacza, że ​​procesor x86 może wykonywać proste mnożenia w instrukcji lea?Czy to mnożenie ma wpływ na liczbę cykli potrzebnych do wykonania instrukcji?Czy mnożenie jest ograniczone do potęgi 2 (zakładam, że tak jest)?

Z góry dziękuję.

questionAnswers(3)

yourAnswerToTheQuestion