Buonasera a tutti,
Visual Studio mi da diversi errori quando devo gestire il valore di ritorno.
Se ad esempio ho una funzione che deve restituire un intero, con un codice di questo tipo:
.586
.model flat
.code
_funzione proc
push ebp
mov ebp,esp
push eax
push ebx
push esi
push edi
mov eax,dword ptr[ebp+8]
mov esi,0
mov edi,0
CICLO:
...
Funzione che calcola qualcosa e mette il risultato nel registro edi
...
FINE:
;metto in eax il valore di ritorno (edi)
mov eax,edi
;ripristino registri sporcati
pop edi
pop esi
pop ebx
pop eax
;ripristino ebp
mov esp,ebp
pop ebp
ret ;ritorno
_funzione endp
end
Chiaramente il precedente codice è errato in quanto restituisce il valore che eax possedeva prima dell'esecuzione.
Allora ho che il valore di ritorno sarà quello contenuto da eax e quindi devo far il "pop eax" dopo il comando "ret", giusto?
Così facendo però devo anche spostare il "pop ebp" sotto ret, ma in questo modo ricevo un errore di "Access Violation".
Come devo fare quindi? Dove devo posizionarli quei comandi?
Grazie in anticipo a chi vorrà aiutarmi!