Ассемблер (не компилятор, хотя он очень похож) обработает бит 6*7
как 42, а затем инструкция:
MOV EAX,[ebx+42]
Это то, что процессор может выполнить, добавив содержимое регистра ebx
и константу 42, затем используя этот адрес для загрузки eax
. Нет инструкции, которая кодирует 6 и 7 как разные объекты, которые были бы умножены позже.
LEA
такая же реальная инструкция, как и любая другая. Опять же, ассемблер может обрабатывать постоянное свертывание (вычисляя фиксированные значения), чтобы получить инструкцию ассемблера в удобную для процессора форму.
Вам нужно только подумать об инструкции:
mov ax,1+1+1+1+1+1+1
Это не будет закодировано как некоторая (магическая) последовательность байтов eb 01 01 01 01 01 01 01
, оно будет закодировано точно так же, как любое из следующего:
mov ax,7
mov ax,49-42
mov ax,42/6