Почему компилятор генерирует этот код?

Я дизассемблировал объектный файл (скорее всего, сгенерированный с помощью компилятора 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 ?

11
задан Mehrdad 25 January 2012 в 00:12
поделиться