码迷,mamicode.com
首页 > 其他好文 > 详细

vs2019处理extern方式多模块过程的细节

时间:2021-04-15 12:29:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:运行   set   传递   高级   自动   fse   栈帧   堆栈   调试运行   

第一次写x86高级过程,调试了好久才处理好。
 
在vs2019中,使用extern的方式组建多模块程序,enter和leave指令是多余的。汇编器自动生成了堆栈帧:自动保存并设置了ebp的值,还会帮你生成leave指令。最后,汇编器生成的ret指令是不带参数的。
 
和单模块程序不同,在main过程中,push OFFSET Array给extern外部过程传递堆栈参数的结果不再是.data段的偏移量,例如0或12这样的,而是一个0x00406000的绝对内存地址。这说明,vs2019在调试运行时程序是绝对加载的,它每次都被加载到一个固定的内存位置。

vs2019处理extern方式多模块过程的细节

标签:运行   set   传递   高级   自动   fse   栈帧   堆栈   调试运行   

原文地址:https://www.cnblogs.com/blues2600/p/14660034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!