一个错误,一个教训,关于堆栈平衡
2007-05-08 10:06
253 查看
我一直以为,不同语言决定函数的调用约定,比如,C++使用cdecl,Delphi使用register,因为在查看Delphi帮助<Calling conventions>时,以及经常看到"各种语言中调用子程序的约定是不同的"这样的话,就武断的认为调用约定由语言决定,而API和DLL导出函数都是Stdcall约定。这就是我的错误。
现在,我认为约定是具体函数决定的。就如同DLL导出函数我们人为的指定了调用约定一样。所以,在处理堆栈平衡时,首先要看看函数返回时,是否自己做了堆栈平衡处理,如同代码add esp,4这样的代码或者Ret 8,否则就需要调用者使用add esp,4等来平衡。
以上胡言乱语,以提醒自己想多了,未必好事,得试一下。让看客得笑了。
哈哈哈。。。。
现在,我认为约定是具体函数决定的。就如同DLL导出函数我们人为的指定了调用约定一样。所以,在处理堆栈平衡时,首先要看看函数返回时,是否自己做了堆栈平衡处理,如同代码add esp,4这样的代码或者Ret 8,否则就需要调用者使用add esp,4等来平衡。
以上胡言乱语,以提醒自己想多了,未必好事,得试一下。让看客得笑了。
哈哈哈。。。。
相关文章推荐
- 一个项目的经验教训:关于打乱和拆分数据
- 一个项目的经验教训:关于打乱和拆分数据
- 一个项目的经验教训:关于打乱和拆分数据
- .net中关于windows身份验证的一个教训[原创]
- 流泪总结一个关于Content-Disposition的教训
- 一个项目的经验教训:关于打乱和拆分数据
- 关于使用mybatis的一个惨痛教训
- 一个关于rm -rf 的教训
- 一个教训关于CDaoRecordSet::Open()
- 一个项目的经验教训:关于打乱和拆分数据
- 关于平衡组的一个例子
- 关于C++内存泄漏的一个经验教训
- 一个项目的经验教训:关于打乱和拆分数据
- .net中关于windows身份验证的一个教训[原创]
- 一个项目的经验教训:关于打乱和拆分数据
- 【分享教训】关于一个字母价值2000块钱的深刻教训20150120
- 一个项目的经验教训:关于打乱和拆分数据
- 一个项目的经验教训:关于打乱和拆分数据
- 一个关于js的教训
- 关于写文件的一个教训