vc2017编译清净的函数体,不让编译器在函数头尾乱加东西

默认生成的project会将编译出的函数结尾加上类似于以下的东西:

00412FE8  push        edx 
00412FE9  mov         ecx,ebp
00412FEB  push        eax 
00412FEC  lea         edx,[ (413000h)]
00412FF2  call        @ILT+135(@_RTC_CheckStackVars@8) (41108Ch)
00412FF7  pop         eax 
00412FF8  pop         edx 
00412FF9  pop         edi 
00412FFA  pop         esi 
00412FFB  pop         ebx 
00412FFC  mov         esp,ebp
00412FFE  pop         ebp 
00412FFF  ret              

去掉的方法如下:

项目-属性-c/c++ - 代码生成:

基本运行时检查 : 默认值

安全检查: 禁用安全检查(/GS-)

 

再编译出来就是干净的函数体了!

另外,为了兼容GCC,可以设置:属性-常规-字符集:未设置(默认:unicode)

 

// 作用: 去掉函数的栈帧代码,纯属吹毛求疵:-)

// 即函数开头的push ebp / mov ebp, esp和结尾的pop ebp / retn

__declspec(naked)   //vc2017 x64不支持,只支持x86
void main()

{
...

 

转载于:https://my.oschina.net/u/1777508/blog/2870356

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值