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

Posted yahari

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《编译系统透视:图解编译原理》相关的知识,希望对你有一定的参考价值。

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

以上是关于《编译系统透视:图解编译原理》的主要内容,如果未能解决你的问题,请参考以下文章

java虚拟机工作原理图解

恶补计算机基础知识

硬核文章:图解 Go 编译器的高级操作

JVM虚拟机原理图解1--class文件基本组织结构

Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

如何有条件地将 C 代码片段编译到我的 Perl 模块?