Pregunta

¿Existe una herramienta para mostrar si la convención de llamada es _cdecl o _stdcall o de lo contrario?

¿Fue útil?

Solución

convenciones de llamada son por función - No archivo PE

.

Funciones de biblioteca. al menos los proporcionados por MS, son todos _stdcall. Todo lo demás se extiende por otras convenciones de llamada, la mayoría de ellos _cdecl.

Puede leer más aquí .

La versión corta:

  • Funciones cdecl no desactivarla del argumento de la pila, lo que permite argumentos de tamaño variable. Buen ejemplo de ello es que puede printf() un número diferente de argumentos.
  • Funciones stdcall Borra los argumentos de los propios pila. argumentos de tamaño Por lo tanto variable no es posible.

Edit: ejemplo añadido

Ejemplo para cdecl de el enlace :

push c
push b
push a
call function_name
add esp, 12 ;Stack clearing, 3 arguments take 12 bytes of space (on 32bit)

Así que después vuelve function_name, la persona que llama borra los argumentos de la pila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top