C语言内自定义汇编函数&调用约定

探究如何在C语言里直接自写汇编函数

裸函数

裸函数与普通函数的区别

普通函数在经过编译器编译时,编译器自动生成保护现场,恢复现场等反汇编代码

当我们想要自己实现函数内部的汇编代码时,就可以告诉汇编器不需要去生成额外的汇编代码,这就是裸函数的目的

裸函数声明

就是在函数前加一个__declspec(naked)前缀,就OK了

include "xxx" | include

是一种规范而已,前者包含用户自定义,后者包含标准库文件

#include "stdafx.h"

void __declspec (naked) function(){
        __asm{
                ret
        }
}
int main(int argc, char* argv[])
{
        function();
        return 0;
}

普通函数再经汇编后

C语言内自定义汇编函数&调用约定

裸函数

C语言内自定义汇编函数&调用约定

调用协定

C语言内自定义汇编函数&调用约定

函数调用结束后手动恢复堆栈
C语言内自定义汇编函数&调用约定

函数返回前,会自动恢复堆栈

C语言内自定义汇编函数&调用约定

C语言内自定义汇编函数&调用约定

上一篇:从零开始开发微信公众号系列篇一:微信测试号申请


下一篇:微信公众平台基础