码迷,mamicode.com
首页 > 其他好文 > 详细

《编译系统透视:图解编译原理》

时间:2016-06-01 19:41:28      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

【Wed Jun 01 2016 16:32:21】

  C 程序运行的核心是函数的执行和调用,它构成了整个C 程序运行时结构的基础框架。这一运行过程主要是在程序指令的驱动以及数据压栈、清栈的支持下实现的。为了介绍这一过程,我们设计了一个简单C 程序,如下所示:

技术分享
 1 int fun(int a,int b);
 2 int m = 10;
 3 
 4 int main()
 5 {
 6     int i=4;
 7     int j=5;
 8     m = fun(i,j);
 9     printf("%d\n", m); //9
10     return 0;
11 }
12 
13 int fun(int a,int b)
14 {
15     int c = 0;
16     c = a + b;
17     return c;
18 }
View Code

  程序很简单,却凸现了函数调用和执行的最基本情况。我们把此情景展现在内存中,共有三个区域,分别是代码区、静态数据区和动态数据区。情景如图1-1 所示。
  代码区装载了这个程序所对应的机器指令,main 函数和fun 函数的机器指令装载位置如图1-2 所示。
  全局变量m 的数值装载在静态数据区中,情景如图1-3 所示。
  程序开始执行前,动态数据区中没有数据,情景如图1-4 所示。

技术分享

《编译系统透视:图解编译原理》

标签:

原文地址:http://www.cnblogs.com/yahari/p/5550524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!