__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 了。