IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】函数栈帧的创建和销毁(1) -> 正文阅读

[C++知识库]【C语言】函数栈帧的创建和销毁(1)

前言:

?? 在我们前期学习C语言时,你是否曾产生过很多困惑?

💭 比如:局部变量是怎么创建出来的?因为局部变量的值是随机值,我们建议将它初始化,那么为什么局部变量的值是随机值?函数是如何传递参数的?传参的顺序又是怎样的?形参和实参是什么样的关系? 函数的调用是怎样的一个过程?函数调用结束后是怎么返回的?

💡? 如果这些问题 "成功" 难住了你,并且你好奇这到底是为什么,建议仔细阅读这篇文章,我们将讲解函数栈帧的创建和销毁。学习了函数的栈帧和销毁后,这些问题自然就能迎刃而解,而且还能增加自己的内功,对于后期学习更多的知识是很有帮助的!


一、预备知识

在讲解函数栈帧之前,我们先探讨该使用什么编译器来观察。其次,要想了解函数栈帧,我们还需要先了解一些必备的基础知识。

0x00 该选择何种编译器观察

📚 不要使用太高级的编辑器,因为高级的编译器中函数栈帧的过程封装得更加复杂,不容易在里面抽离出函数栈帧创建的过程。值得一提的是,在不同的编译器下函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现。所以为了能够更好地观察和学习,我们将使用 VS2013 来进行学习和观察。

0x01 寄存器

? 什么是寄存器?

💡 我们在前面的章节就提到过寄存器的概念了。寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。寄存器有 eax、ebx、ecx、edx、ebp、esp等。

📚 每一个函数调用,都要在栈区上创建一个空间:

💬 测试代码:

#include <stdio.h>

int Add(int x, int y) {
	return (x + y);
}

int main(void) {
	int a = 10;
	int b = 20;
	int ret = 0;

	ret = Add(a, b);
	printf("%d\n", ret);

	return 0;
}

📚 在 VS2013 中,main函数也是被其他函数调用的:

????? __tmainCRTStartup 👉 mainCRTstartup 👉 main

直接按 F10 开始调试,调试→窗口→反汇编

此时就可以看到汇编代码了:


未完待续

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:00:48  更:2021-10-21 12:01:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:05:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码