Я скомпилировал этот код C:
void foo() {
int i = 0;
i = 0;
i = 0;
}
и я получил это:
push ebp
mov ebp,esp
push ecx
mov dword ptr ss:[ebp-4],0
mov dword ptr ss:[ebp-4],0
mov dword ptr ss:[ebp-4],0
mov esp,ebp
pop ebp
retn
Мой вопрос: почему там push ecx
? и как получается, что нет sub esp,4
или что-то, чтобы освободить место в стеке? Параметры компилятора не используются.