Когда я пишу ассемблер, я обычно выбираю форму
lea eax, [eax+4]
Вместо формы ..
add eax, 4
Я слышал, что lea - это инструкция "0-такта" (например, NOP), а «добавить» - нет. Однако, когда я смотрю на сборку, созданную компилятором, я часто вижу, что последняя форма используется вместо первой. Я достаточно умен, чтобы доверять компилятору, так может ли кто-нибудь пролить свет на то, какой из них лучше? Какой из них быстрее? Почему компилятор выбирает последнюю форму, а не первую?