第二节 2.1裸函数与汇编写法

1、裸函数的写法

2、如何在C语言里写汇编代码


声明一个裸函数后,编译器不会生成任何的代码


#include <iostream>
#include<Windows.h>

//构造裸函数
int __declspec(naked) plus(int x,int y)
{    
    __asm
    {
        //提升堆栈
        push ebp
        mov ebp,esp
        sub esp,0x40

        //保护现场
        push edi
        push ebx
        push esi

        //填充缓冲区
        lea edi,dword ptr ss:[ebp-0x40]
        mov ecx,0x10
        mov eax,0xcccccccc
        rep stosd

        //加法功能
        mov eax,[ebp+0x8]
        add eax,[ebp+0xc]

        //恢复现场
        pop esi
        pop ebx
        pop edi

        //降低堆栈
        mov esp,ebp
        pop ebp

        ret
    }
}
int main()
{
    plus(1,2);
    system("pause");
}