裸函数
概述 _declspec(naked)修饰可以生成一个“裸”函数, 使用后C编译器将生成不含函数框架的纯汇编代码,裸函数中什么都没有,所以也不能使用局部变量,只能全部用内嵌汇编实现。 裸函数的定义 1 void __declspec(naked) Function() 2 3 { 4 ... 5 } _declspec(naked) 的介绍: _declspec(naked), 就是告诉编译器,在编译的时候,不要优化代码,通俗的说就是, 没代码,完全要自己写 比如: 1 #define NAKED __declspec(naked) 2 3 void NAKED code(void) 4 { 5 __asm 6 { 7 ret 8 } 9 } 使用__declspec(naked)关键字定义函数: 1,使用 naked 关键字必须自己构建 EBP 指针 (如果用到了的话); 2,必须自己使用 RET 或 RET n 指令返回 (除非你不返回); _delcspec(naked)用在驱动编写,C语言内嵌汇编完成一些特定功能。 实例 我们先通过一个C语言中最简单函数,然后观察反汇编代码,看看编译器为我们做了些什么 编译环境:VmWare Workstation 15 Pro、windows 7、VC++ 6.0 英文版 1 //