• 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内存当中。 如图所示:

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

     ...

  • 相关阅读:
    Cocos2d-x 学习笔记(11.1) MoveBy MoveTo
    Cocos2d-x 学习笔记(10) ActionInstant
    Cocos2d-x 学习笔记(9) Action 运行原理
    Cocos2d-x 学习笔记(8) ActionManager
    Cocos2d-x 学习笔记(7) 内存管理 Sprite SpriteFrame Texture2D
    Cocos2d-x 学习笔记(6) Sprite SpriteFrameCache Texture2D TextureCache
    常见串口术语区分
    串口调试
    Linux
    缓冲区
  • 原文地址:https://www.cnblogs.com/beyond-Acm/p/4148171.html
Copyright © 2020-2023  润新知