Valore di ritorno e pop eax

di il
1 risposte

Valore di ritorno e pop eax

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!

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte