ahah sky, bella l'ultima similitudine circa la donna della motorizzazione
volendo aggiungere qualcosina alla questione dell'int di ritorno, cosi tanto per arricchire le conoscenze di chi è interessato, questo è il programma con l'int di ritorno
int main()
{
return (100);
}
00401000 >/$ 55 PUSH EBP
00401001 |. 8BEC MOV EBP,ESP
00401003 |. B8 64000000 MOV EAX,64
00401008 |. 5D POP EBP
00401009 \. C3 RETN
questo è il programma senza int di ritorno:
main()
{
}
00401000 >/$ 55 PUSH EBP
00401001 |. 8BEC MOV EBP,ESP
00401003 |. 33C0 XOR EAX,EAX
00401005 |. 5D POP EBP
00401006 \. C3 RETN
ora, chiariamo come ragiona l'eseguibile, il valore di ritorno del programma eseguito viene messo nel registro EAX poco prima di uscire dal codice, quindi tralasciando le altre istruzioni che non ci interessano ora, la differenza tra i due programmi è questa:
ritorna int di valore 100 (64 esadecimale) :
MOV EAX,64
non ritorna nessun int:
XOR EAX,EAX
notare che XOR EAX,EAX è come dire MOV EAX,0
capito? praticamente non c'è nessuna differenza tra un programma che torna un valore ed uno che non lo torna,
alla fine l'eseguibile TORNA SEMPRE UN VALORE, solo che nel secondo caso, di default il valore tornato è 0
spero sia chiara la spiega
ciao