Prolog&Epilog

这篇博客会简单介绍一下Prolog&Epilog 然后再简单介绍下我对于程序在计算机中到底如何运行的一些理解(因为自己之前也从来没有接触过这些方面的知识,所以如果有讲的不对的地方希望大家能够帮我指正)

1.首先我们认识下什么是Prolog&Epilog 其实就是两段固定的代码, 当编译器对程序进行编译的时候就会生成这两段代码, 然后编译器会在每一个函数的开头塞入Prolog代码,在每一个函数的结尾塞入 Epilog代码。 你可以把Prolog看成是一段程序的前言,把Epilog看成是一段程序的尾言。

2.废话不多说,我们用一段程序来进行理解:

 1 #include <stdio.h>
 2 int add(int x, int y)
 3 {
 4     int i = 0; int j = 10;
 5     return (x+y);
 6 }
 7 int main (int argc, char * argv[])
 8 {
 9     printf("%d
", add(5,6));
10     return 0;
11 }

这里写了一段很简单的C程序,其中在main函数中调用了我们自定义的add()函数,我们会用ollydbg来观察一下程序到底是如何运行的。

在windows平台下我们可以通过 >cl /c add1.c 生成目标文件add1.obj

                >link add1.obj 生成可执行文件 add1.exe

3. 当我们运行此程序的时候, OS(操作系统)首先会把这段程序加载到一个虚拟的4G内存当中。 如图所示:

这个地方有一些概念会以后单独写文章再进行阐述,此处我们可以简单理解为: 当但我们对程序进行编译以后,程序是位于磁盘上的, 当我们点击运行程序以后程序会加载到内存当中。

 ...

原文地址:https://www.cnblogs.com/beyond-Acm/p/4148171.html