Я дизассемблировал объектный файл (скорее всего, сгенерированный с помощью компилятора Visual C ++) с помощью DumpBin
и увидел следующий фрагмент кода:
... ...
mov dword ptr [ebp-4],eax // Why save EAX?
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax,dword ptr [ebp-4] // Why restore EAX? Did it change at all?
call <function>
... ...
Не могли бы вы объяснить, почему регистр EAX сохраняется и восстанавливается с помощью этих 4 инструкций push
?