tengo el siguiente código asm:ret, RETN, retf - cómo los utilizan
; int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
[email protected] proc near
var_8= dword ptr -8
var_4= dword ptr -4
hInstance= dword ptr 8
hPrevInstance= dword ptr 0Ch
lpCmdLine= dword ptr 10h
nShowCmd= dword ptr 14h
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], 5
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_8], eax
xor eax, eax
mov esp, ebp
pop ebp
retn 10h
Por lo que leo, tiene 3 tipos de instrucción de retorno: ret, RETN y retf, es decir, vuelta cerca y regresa lejos. Permiten un argumento opcional nBytes, que supongo que es el número de bytes que se mostrarán a partir de las variables definidas. ¿Cuándo debo usar retn o retf en lugar de ret? ¿Cómo puedo calcular el parámetro opcional, nBytes?
Ah, entonces la N in ret N se refiere a la cantidad de argumentos enviados por la persona que llama, y no a las variables locales, como yo pensaba. ¿Es asi? –
Sí. Es el número de argumentos empujados. Los locales están influenciados por mov esp, ebp comando al final – Max