__declspec(naked) int add(int a, int b)
{
_asm
{
mov eax, dword ptr [esp + 0x4]
add eax, dword ptr [esp + 0x8]
ret
}
}
函数 __declspec(naked) int add(int a, int b) 生成的汇编代码
:00401BCC 8B442404 mov eax, dword ptr [esp+04]
:00401BD0 03442408 add eax, dword ptr [esp+08]
:00401BD4 C3 ret
因为函数开头没有
push ebp
mov ebp, esp
ebp没有入栈,所以函数参数地址就是 esp + 0x4 和 esp + 0x8 了。自然函数结束也不需要 pop ebp 了。