最近在写驱动时候初次使用裸函数,做一些记录
_declspec(naked)修饰可以生成一个“裸”函数, 使用后C编译器将生成不含函数框架的纯汇编代码,裸函数中什么都没有,所以也不能使用局部变量,只能全部用内嵌汇编实现。
可以看一下裸函数被编出来是什么样的
写一个空的裸函数
可以看到外面调用这个test函数的地方是正常的去编译的
f11进去之后可以看到裸函数的位置我门在f10跟过去之后会发现这里是空的
就是说_declspec(naked)修饰的函数编译器会默认里面全是汇编语句,对于这个函数内部实现编译器不会帮我们做任何处理,在调用的时候默认c调用约定去调用我们的裸函数
大部分时候应用层开发是用不到这个修饰的,不过也可以通过裸函数偶尔来巩固一下汇编也是不错的方式。
像是这样自己通过汇编去实现一些小的功能性的函数也是可以的,像是字符串处理这种