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

【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 所示。

转载于:https://www.cnblogs.com/yahari/p/5550524.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值