知识点复习
知识点复习归纳
surplus12138
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从编译器角度来理解C++代码的编译和链接原理
我们可以在linux系统下进行对下列代码是如何进行编译进行一个理解 main.cpp: //引用sum.cpp文件里面定义的全局变量以及函数 extern int gdata; int sum (int, int) ; int data = 20; int main () { int a = gdata; int b = data; int ret =sum (a, b); return o; } sum.cpp: int gdata = 10; int sum(int a, int b) {原创 2020-10-04 01:20:01 · 305 阅读 · 0 评论 -
从汇编分析函数调用堆栈详细过程
首先由下面简单的代码我们来考虑两个问题: 1.main函数调用sum,sum执行完以后,怎么知道回到哪个函数中? 2.sum函数执行完,回到main以后,怎么知道从哪一行指令继续运行的? int sum(int a,int b) { int temp = 0; temp = a + b; return temp; } int main() { int a = 10;//mov dword ptr[edp-4], 0Ah int b = 20;//mov dword ptr[edp-8], 14h原创 2020-10-02 01:06:40 · 1066 阅读 · 0 评论 -
详解进程虚拟地址空间区域划分
众所周知,任何的编程语言都会产生两种东西:数据和指令。那么拿我们c++代码来看,编译链接完成之后在我们Windows上来说会产生一个xxx.exe的可执行文件,现在这个文件放在我们磁盘上,那么cpu肯定是不能直接运行磁盘上的程序的,那么在运行它的时候首先会把这个程序从磁盘上加载到内存当中,那么就涉及到几个问题 1.这一个可执行程序的哪些东西将会加载到内存当中? 2.加载到内存当中他是如何存放的? 3.内存有没有区域的划分? 4.划分了以后到底是什么样子? 首先我们得搞清楚一点,加载到内存是不可能直接加载到物原创 2020-09-16 14:58:56 · 1268 阅读 · 0 评论
分享