Ho appena notato qualche strano linguaggio assembly assembly del metodo main vuoto.Spiega lo strano assemblaggio della funzione C `main` vuota dal compilatore Visual C++
//filename: main.c
void main()
{
}
smontaggio:
push ebp
mov ebp,esp
sub esp,0C0h; why on the earth is it reserving 192 bytes?
push ebx
push esi
push edi ; good compiler. Its saving ebx, esi & edi values.
lea edi,[ebp-0C0h] ; line 1
mov ecx,30h ; line 2
mov eax,0CCCCCCCCh ; line 3
rep stos dword ptr es:[edi] ; line 4
xor eax,eax ; returning value 0. Code following this line is explanatory.
pop edi ; restoring the original states of edi,esi & ebx
pop esi
pop ebx
mov esp,ebp
pop ebp
ret
- perché sulla terra è esso riservando 192 byte per funzione in cui non ci sono variabili
- cosa con le quattro linee: linea 1, linea 2, riga 3, riga 4? cosa sta cercando di fare & PERCHÉ?
perché la sintassi del codice non è evidenziata? – claws
Quale assembly viene prodotto quando si assembla un'istruzione principale non vuota e cosa succede quando si modifica il tipo restituito da main a int? –
Vale la pena sottolineare che i principali rendimenti int. Usare il vuoto per main non è buono juju. – nmichaels