热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

Nasm-Winapi函数不会弹出其参数

如何解决《Nasm-Winapi函数不会弹出其参数》经验,为你挑选了1个好方法。

我在用Nasm编写程序时发现,虽然winapi函数完成后会从堆栈中弹出CreateProcessAGetModuleFileNameA弹出参数,但并printf没有这样做。

有什么理由吗?而且更重要的是:还有其他不从堆栈弹出元素的winapi函数吗?因为我的程序行为异常,所以我想确保所有程序都不是由未弹出的值引起的。



1> Anders..:

99%的导出的Windows函数使用stdcall调用约定。在32位x86上,这会创建更小的更有效的代码,因为被调用者将还原堆栈。

带有可变数量参数的函数不能使用stdcall,因为只有调用者才能知道有多少个参数,因此调用者必须还原堆栈。

printf不是Windows函数,它是C库函数,大多数C库使用cdecl调用约定,在该约定中,调用方将恢复堆栈。Windows提供的打印功能,例如wsprintfcdecl。您可以假定任何...以final 结尾的API函数都使用cdecl。


推荐阅读
author-avatar
mini泥猴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有