在Debug版本下的调用处,我们会看到这种代码,没有流水线优化,没有任何优化
看到了,两个push,紧接着一个Call,然后平栈在外面
识别参数
有经验的可能会说两个push 就是两个参数,其实不然...识别返回值
从上面的识别参数我们看到,eax重新写入了,那么返回值就是int类型
Release版本下的汇编
?..., char* argv[])
{
MyAdd(3,4);
return 0;
}
Debug下的汇编代码
1.main 函数调用处
?...* argv[])
{
MyAdd(3.0f,4.0f,6);
return 0;
}
直接一次性的把各种参数类型,以及返回值设置不一样.观看汇编
Debug下的汇编代码
1.函数调用处...,但外面更改了ecx,里面使用了ecx,那么就是4个参数,但因为其中一个参数类型是double,所以还是三个参数.
3.识别参数类型,看指令来判断是什么类型,fld指令是浮点,fixxx指令则是使用的