超硬核---从汇编角度带你了解函数(建议保存)
2021/11/20 1:11:19
本文主要是介绍超硬核---从汇编角度带你了解函数(建议保存),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
1、我们将要解决的问题
2、寄存器
3、源代码展示
4、函数的调用关系(看汇编代码)
5、正片开始(危)
1、我们将要解决的问题
2、寄存器
首先给大家普及一下寄存器的类型,当然,并不详细讲解!
寄存器:
eax ebx ecx edx
ebp esp这两个寄存器中存放的是地址,这两个地址是用来维护栈帧的。
那么这两个寄存器是如何来维护栈帧的呢?
每一个函数的调用,都要在栈区创建一块空间。
3、源代码展示
4、函数的调用关系(看汇编代码)
在vs2013中,main()函数也是要被调用的,被__tmainCRTStartup调用,而这个函数,又被mainCRTStartup函数调用,关系如下图所示:
5、正片开始(危)
每当函数被调用的时候,ebp和esp两个寄存器就用来维护相应的栈帧空间,一个是栈底指针,一个是栈顶指针。
注意:ecx中保存的39h是rep stos这条指令执行的次数。
当然,今天并没有完全讲完,后面还有一小部分没有讲出,不过相信带大家了解到这个地方后,后面的大家也能根据前面的讲解,大致推导出后面汇编代码的意思,事实上,对于栈帧的开辟,大同小异,好了,今天的分享就到这了,觉得对你有所帮助的话,点一个小小的赞吧!
这篇关于超硬核---从汇编角度带你了解函数(建议保存)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程