首页
社区
课程
招聘
[求助]_declspec(naked)作为函数头有什么涵义啊?
发表于: 2008-6-12 00:53 9428

[求助]_declspec(naked)作为函数头有什么涵义啊?

2008-6-12 00:53
9428
看了有些高手发的源代码,有些函数在定义的时候,函数名之前有一个_declspec(naked)。可否有人解释一下是什么意思啊?我怎么在百度上搜不到。谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
貌视不要优化这个函数……
2008-6-12 03:13
0
雪    币: 424
活跃值: (2509)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
MSDN里就有嘛~~

For functions declared with the naked attribute, the compiler generates code without prolog and epilog code. You can use this feature to write your own prolog/epilog code sequences using inline assembler code. Naked functions are particularly useful in writing virtual device drivers. Note that the naked attribute is only valid on x86, and is not available on x64 or Itanium.
2008-6-12 08:52
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
naked就是裸的意思

通俗的说
就是什么代码都没有,你得自己加上去。。
2008-6-12 11:06
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
_declspec(naked)
就是告诉编译器,在编译的时候,不要优化代码,通俗的说就是
没代码,完全要自己写
比如
#define NAKED        __declspec(naked)

void NAKED code(void)
{
    __asm
    {
         ret
     }
}
使用__declspec(naked)关键字定义函数:
使用 naked 关键字必须自己构建 EBP 指针 (如果用到了的话);
必须自己使用 RET 或 RET n 指令返回 (除非你不返回);
2008-6-12 12:12
0
雪    币: 80
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
感谢楼上几位的指导,我懂了。
2008-6-12 22:42
0
游客
登录 | 注册 方可回帖
返回