当前位置:首页 >> 小学教育 >>

第1章 编译简介


课程: 编译原理
主讲: 白明
五邑大学 计算机学院 E-mail:oopdb@163.com

关于编译原理课程
◆ 编译程序的原理和技术具有十分普遍的 意义,以致在每一个计算机科学家的研究 生涯中都会用到编译所涉及的相关原理和

技术。
◆ 编译器的编写涉及到程序设计语言、 计算机体系结构、语言

理论、算法和软件 工程等学科。

关于编译原理课程
学习编译原理课程的意义 ? 仅从专业角度看 学习编译原理课程的目标 ? 专业知识积累

? 编程经验积累
学习编译原理课程的要求 ? 掌握一般编译技术

? 进行文件转换的具体实现
考核 ? 平时:作业和综合实验

? 期末:基础知识、较简单的编译技术与方法实现

第 1 章 编译简介
◎ 理解编译器的概念 ◎ 典型的语言处理系统

◎ 理解编译过程各阶段的作用
◎ 理解编译器的前端和后端

编译原理

第1章 编译简介

(4)

1.1 编译器
表1.1 面向机器和面向人类语言举例
分 类 语言表现形式举例 0000 0011 1111 0000 add si, ax x := a + b; sort(list); if c then a else b;

机器指令
面向机器

汇编指令 通用程序设计语言
面向人类

数据查询语言
形式化描述语言

select id_no, name from student_table;
E : E '+'E | E '*'E | id;

编译原理

第1章 编译简介

(5)

1.通用程序设计语言
这类语言的特征是:语言结构符合人类的思维特征,如直接使用表达

式进行数学运算;具有很高抽象程度,如引入过程与类等机制;程序设计
中强调逻辑过程,即程序员要考虑事情的前因后果,不但要设计做什么, 还要考虑怎么做。

2.数据查询语言
与通用程序设计语言相比,数据查询语言的抽象程度更高,它只要求 程序员具有清晰的逻辑思维能力,设计好做什么,而忽略怎么做这样的实 现细节,从而使得对大量复杂数据的处理变得轻松简单。

编译原理

第1章 编译简介

(6)

3.形式化描述语言
形式化描述语言的代表之一是编译器构造中常用的工具YACC的语言。

这类语言的核心部分是基于数学基础的产生式,设计人员只需利用产生式
描述语言结构的文法,就可以构造出识别该语言结构的识别器。

4.其他面向特定应用领域的语言
面向特定应用领域的高级语言 ,如面向互联网应用的HTML、XML,面

向计算机辅助设计的MATLAB,面向集成电路设计的VHDL、Verilog,面
向虚拟现实的VRML等等。

编译原理

第1章 编译简介

(7)

语言之间的翻译
计算机硬件真正能够识别的语言只是0、1组成的机器指令序列,这就需要 换句话说,我们需要若干“翻译”,把人类懂的高级语言翻译成计算机懂的 机器语言。由于应用的不同,语言之间的翻译是多种多样的。

在高级语言和机器语言之间建立若干桥梁,将高级语言逐步过渡到机器语言。

编译原理

第1章 编译简介

(8)

编译器与解释器
编译器(Compiler)一词是Grace Murray Hopper在20世纪

50 年 代 初 提 出 来 的 , 最 早 的 编 译 器 是 50 年 代 末 研 制 的
FORTRAN编译器。 解释器采用另一种方式翻译源程序。它不像编译器那样, 把源程序的翻译和目标程序的运行分割开来,而是把翻译和 运行结合在一起进行,翻译一段源程序,紧接着就执行它。

这种方式被称为解释。在计算机应用中,凡是可以采用编译
方式的地方,几乎都可以采用解释的方式。
编译原理 第1章 编译简介 (9)

编译器与解释器
假设有源程序: read(x); write("x=",x); 则编译器的输入是此源程序。目标程序的输入如果是3, 则输出是x=3。而对于解释器,则输入端既包括上述源程序, 又包括3,其输出同样是x=3。

编译原理

第1章 编译简介

(10)

编译器与解释器

图1.2 编译器与解释器工作方式的对比 (a) 编译器的工作方式;(b) 解释器的工作方式

编译原理

第1章 编译简介

(11)

工程文件

预处理器
源程序 编译器 可重定位目标文件库 汇编器

目标汇编程序

可重定位机器代码

装配连接器

编译执行的高级语言程序的编制过程
编译原理 第1章 编译简介 (12)

绝对机器码

编译器与解释器
解释器与编译器的主要区别在于:运行目标程序时的 控制权在解释器而不在目标程序。因此,与编译器相比, 解释器有以下两个优点: (1) 具有较好的动态特性: 运行时,由于源程序也参与 其中,因此数据对象的类型可以动态改变,并允许用户对 源程序进行修改,且可提供较好的出错诊断,从而为用户 提供了交互式的跟踪调试功能。

(2) 具有较好的可移植性: 解释器一般也是用某种程序 设计语言编写的,因此,只要对解释器进行重新编译,就 可以使解释器运行在不同的环境中。
编译原理 第1章 编译简介 (13)

编译器与解释器
解释器的动态特性和可移植特性,典型的例子是数 据库系统中的动态查询语句和Java的字节代码。前者利 用了解释器的动态特性,在程序运行时根据输入动态生

成查询语句,然后解释执行。后者利用了解释器的可移
植特性,可在任何机器上对字节代码进行解释执行,习 惯上称之为Java虚拟机。 解释器与编译器相比,运行时间和空间上的损失较 大,运行效率低:
编译原理 第1章 编译简介 (14)

编译器与解释器
解释器与编译器相比,运行时间和空间上的损失较 大,运行效率低: (1) 时间上:运行过程中,解释器要时刻检查源程序。 如:每一次引用变量,都要进行类型检查,甚至需要重 新进行存贮分配,从而大大降低了程序的运行速度。用 早期BASIC编写的源程序,编译后运行和解释执行的时 间比约为1:10。 (2) 空间上:执行解释时,不但要有用户程序的运行空 间,而且解释器和相应的运行支撑系统也要占据内存空 间。
编译原理 第1章 编译简介 (15)

1.2 编译器的分析过程
1. 通用程序设计语言的主要成份
通用程序设计语言的典型特征之一是抽象,其抽象程度 是以程序设计语言所支持的基本结构为特征的,可以大致 划分为三种形式:过程、模块(抽象数据类型,ADT)和 类。 以过程为基本结构的程序设计语言的特征是把整个程序 作为一个过程。过程的定义由两类语句组成:声明性语句 和操作性语句。声明性语句提供所操作对象的性质,如数 据类型、值、作用域等。而操作性语句确定操作的计算次 序,完成实际操作。
编译原理 第1章 编译简介 (16)

例1.1 有一Pascal的过程如下所示: (1) procedure sample(y: integer); (2) (3) (4) (5) end; var x : integer; begin x := y; if x>100 then x :=0

编译原理

第1章 编译简介

(17)

(1)

过程头是一个声明性的语句,为使用者提供调用信息,

包括过程名、参数、返回值(如果有的话)等。 (2)~(5)过程体是一个语句序列,语句序列中既包括声明性 语句也包括操作性语句。(2)是声明性语句,而(3)~(5)是操作性 语句。

对于编译器,声明性语句的处理一般生成相应的环境(存
储空间),而操作性语句则生成此环境中的可执行代码序列。 为了便于编译器的处理,操作性语句中使用的每个操作对象, 均应在使用前进行声明,即遵循先声明后引用的原则。

编译原理

第1章 编译简介

(18)

源程序

2. 编 译 程 序 的 逻 辑 结 构
编译原理

词法分析器 单词符号 语法分析器 信 息 表 格 管 理 程 序 语法单位 语义处理 语义信息 错 误 检 查 处 理 程 序

中间代码生成器
中间代码 代码优化 优化的中间代码 目标代码生成器 目标程序

第1章 编译简介

(19)

3. 编译器各阶段的工作
例1.2 有一Pascal源程序语句如下所示: var x, y, z : real;

x := y + z * 60; 词法分析:编译器从左到右扫描输入。词法分析器的输入是源
程序,输出是识别出的记号流。

var x, y, z : real; x := y + z * 60;
词法分析 var id1, id2, id3 : real; id1 := id2 + id3 * 60;
编译原理 第1章 编译简介 (20)

语法分析:以词法分析器返回的记号流为输入构造句子的结构, 并以树的形式表示出来,称之为语法树。 语法分析
: , , id 1 id 2 id 3 rea 1 id 1 id 2 id 3 :=



* 60

编译原理

第1章 编译简介

(21)

语义分析:根据语法分析器构造的语法树,进行适当的语义

处理。对于声明语句,进行符号表的查填。下述符号表部分
的内容中,每一行存放一个符号的信息,第一行存放标识符x 的信息,它的类型是real,为它分配的地址是0。第二行存放y 的信息,它的类型是real,为它分配的地址是4。 由此可知,每个实型数分配一个大小为4个单位的存储空

间。对于可执行语句,检查结构合理的表达式运算是否有意
义。由于变量x,y,z均是real,而60被认为是integer,因此, 语义检查时需要进行把60转换为60.0的处理。反映在语法树上, 就是增加了一个新节点itr(将整型数转换为实型数)。
编译原理 第1章 编译简介 (22)

语义分析器根据语法分析器构造的语法树,进行适当 的语义处理。

语义分析
:= id 1 0 4 8 id 3 … … 60
编译原理 第1章 编译简介 (23)

符号 表部 分内 容 1 2 3 4 5 x y z rea l rea l rea l



id 2

* itr

中间代码生成:中间代码生成器对语法树进行遍历,并生成 可以顺序执行的中间代码序列。最常用的中间代码形式是四

元式,它的基本形式为:
(序号) (op, arg1, arg2, result)
结果

操作符 左操作数 右操作数

编译原理

第1章 编译简介

(24)

中间代码生成

(1) ?(itr, (2) ?(*, (3) ?(+,

60, id3, id2,

, T1, T2,

T1) T2) T3)

(4) ?(:=,

T3,

,

id1)

编译原理

第1章 编译简介

(25)

中间代码进行优化:分析上边的4个四元式,60是编译时已经知
道的常数,所以把它转换成60.0的工作可以在编译时完成,没 有必要生成(1)号四元式。再看(4)号四元式,它的作用仅是把T3

的值传给id1(这样的运算被称为复写传播),不难看出,这条四
元式也是多余的。经过优化后,4个四元式减少为两个。

中间代码优化 (1) ?(*, (2) ?(+,
编译原理 第1章 编译简介 (26)

id3, id2,

60.0, T1,

T1) id1)

生成目标代码:这里的目标代码是汇编指令,其中MOVF、MULF和ADDF

分别表示浮点数的传送、乘和加操作。对于二元运算MULF和ADDF,操作
形式为OP source,target,它表示target := source OP target,即sorce与 target进行OP运算,结果存进target。对于一元运算MOVF,操作形式为

MOVF source,target,它表示target := source,即将source中的内容移进
target中。

目标代码生成 MOVF MULF MOVF ADDF MOVF
编译原理 第1章 编译简介 (27)

id3, #60.0, id2, R2, R1,

R2 R2 R1 R1 id1

1.2.1 词法分析阶段
词法分析器根据词法规则识别出源程序中的各个记号 (token),每个记号代表一类单词(lexeme)。源程序中常见的 记号可以归为以下几大类,其中每一类均可再细分。

(1) 关键字: 如var、begin、end ...,它们在源程序中均
有特定含义,一般不作它用,在这种情况下也被称为保留字。

(2) 标识符: 如x、y、z、sort ...,它们在源程序中被用作
变量名、过程名、类型名和标号等所有对象的名称。

编译原理

第1章 编译简介

(28)

(3) 字面量: 如60、"Xidian University" ...,一般表示常数 或字符串常量,它们也可以被细分为数字字面量、字符串字 面量等。

(4) 特殊符号: 如":="、"+"、";" ...,它们在源程序中均
有特定含义,根据它们的作用,也可以被细分为运算符、分 隔符等。

编译原理

第1章 编译简介

(29)

1.2.2 语法分析阶段
语法分析器根据语法规则识别出记号流中的结构(短语、 句子等),并构造一棵能够正确反映该结构的语法树。以后我 们会看到,除了反映语言结构外,有些语法树也反映语法分 析的关键步骤。因此,语法树可以是隐含的,也可以确有其 “树”。语法树的数据结构一般采用典型的二叉树结构,因

为任何形态的树均可以转化为二叉树。

编译原理

第1章 编译简介

(30)

1.2.3 语义分析阶段
语义分析器根据语义规则对语法树中的语法单元进行静 态语义检查,如类型检查和转换等,其目的在于保证语法正 确的结构在语义上也是合法的。 当分析到声明语句时,语义分析器将相应的环境信息记 录在符号表中,以便在后继操作语句中使用。不同类型的数 所占用的存贮空间不同,例如real类型占用4个存贮单元,则 三个变量被分配的地址分别为0、4、8。

当分析到操作性语句时,可以根据符号表中的信息判断 各操作数是否合法,由于三个变量均为real,而60是integer类 型,因此,此时的语义分析要增加一个操作itr,把60转换成 60.0。
编译原理 第1章 编译简介 (31)

1.2.4 中间代码生成阶段
中间代码生成器根据语义分析器的输出生成中

间代码。中间代码可以有若干种形式,它们的共同
特征是与具体机器无关。最常用的一种中间代码是

三地址码,它的一种实现方式是四元式。三地址码
的优点是便于阅读、便于优化。 无论是对于解释器还是编译器,到中间代码生 成以前的各阶段(即完成语义分析)是完全一样的。
编译原理 第1章 编译简介 (32)

语义分析完成以后,语法树已经形成,执行计 算的基本元素已经具备,因此,对于解释器来讲, 此时就可以直接形成计算步骤并且进行计算,没有 必要再做中间代码生成和其后的工作。或者,解释 器在语义分析完成以后,生成某种中间代码,统一 对此中间代码进行解释执行。由于语法树和中间代 码均不依赖于任何机器,因此解释器是可移植的。 典型的例子是Java字节代码与Java虚拟机。
编译原理 第1章 编译简介 (33)

1.2.5 中间代码优化阶段
优化是编译器的一个重要组成部分,由于编译器

将源程序翻译成中间代码的工作是机械的、按固定模
式进行的,因此,生成的中间代码往往在时间上和空 间上有很大浪费。当需要生成高效目标代码时,就必 须进行优化。 优化实际上是一个等价变换,变换前后的指令序

列完成同样的功能,但是,优化后的代码序列在占用
的空间上和程序执行的时间上都更节省、更有效。

编译原理

第1章 编译简介

(34)

1.2.6 目标代码生成阶段
目标代码生成是编译器的最后一个阶段。在生成目标代

码时要考虑以下几个问题:计算机的系统结构、指令系统、 寄存器的分配以及内存的组织等。
编译器生成的目标程序代码可以有多种形式。 (1) 汇编语言形式。弱点是编译之后还要经过一次汇编。 (2) 可重定位二进制代码形式

(3) 内存形式: 编译器生成的代码序列直接被装入原编 译器所在的位置并被立即执行,反映在外部也就是编译后马 上运行。
编译原理 第1章 编译简介 (35)

1.2.7 符号表管理器

符号表的作用是记录源程序中符号的必要信
息,并加以合理组织,从而在编译器的各个阶段 能对它们进行快速、准确的查找和操作。符号表

中的某些内容甚至要保留到程序的运行阶段。

编译原理

第1章 编译简介

(36)

1.2.8 出错处理器
错误大致被分为静态错误和动态错误两类。
所谓动态错误,是指源程序中的逻辑错误,若它们发生在程 序运行的时候,也被称为动态语义错误,如变量取值为零时被作为 除数,数组元素引用时下标出界等。 静态错误又可分为语法错误和静态语义错误。语法错误是指有 关语言结构上的错误,如单词拼写错、表达式中缺少操作数、 begin和end不匹配等。静态语义错误是指分析源程序时可以发现的 语言意义上的错误,如加法的两个操作数中一个是整型变量名,而 另一个是数组名等。

静态错误应该在编译的不同阶段被检查出来,并且采用适当的 策略修复它们,使得分析过程能够继续下去,直到源程序的结束。
编译原理 第1章 编译简介 (37)

1.3 编译器的输入和输出处理工具 1. 预处理器

(1)宏处理。
(2)文件包含。 (3)“理性”预处理器。将现代结构化机制加入到 老式语言(非结构化)中。

(4)语言扩充。带参数的宏。

编译原理

第1章 编译简介

(38)

1.3 编译器的输入和输出处理工具 2. 汇编器

程序语句:b=a+5
对应的典型汇编指令如下: MOV a R1; ADD #5 R1; MOV R1 b;

编译原理

第1章 编译简介

(39)

1.3 编译器的输入和输出处理工具 3. 两遍汇编

(1)第1遍:所有标识符识别,并存入符号表中。
(2)第2遍:

○将每个操作符翻译成机器语言中所代表相应操 作的二进制位序列;
○将每个标识符翻译为符号表中该标识符的地址。 最终输出的是可重定位的机器代码。 4. 装配器和链接编辑器
编译原理 第1章 编译简介 (40)

1.4 编译器各阶段的组合
1. 编译器的分析/综合模式

对于编译器的各个阶段,逻辑上可以把它们划分为两个 部分,即分析部分和综合部分。
从词法分析到中间代码生成各阶段的工作称为分析,而 以后直到目标代码生成各阶段的工作被称为综合。 分析部分也被称为编译器的前端,综合部分也被称为编 译器的后端。中间代码起了分水岭的作用,由于中间代码是 与机器无关的,因此它把编译器分成了与机器有关和无关的 两部分,从而提高了编译器开发和维护的效率。

编译原理

第1章 编译简介

(41)

编译器的分析/综合模式

编译原理

第1章 编译简介

(42)

2. 编译器扫描的遍数
我们把每个阶段将程序完整分析一遍的工作模式称为 一遍扫描。 例如,词法分析器对输入源程序进行第一遍扫描,把 源程序分解成一串记号流,并进行必要的符号登记工作 (由符号表管理器处理)。 语法分析器进行第二遍扫描,它以词法分析器输出的 记号流为输入,识别出语言结构,如赋值语句、过程定义 等,并建立和输出对应的语法树。依此类推,最后生成目 标程序。
编译原理 第1章 编译简介 (43)

2. 编译器扫描的遍数 但是,这样一个阶段对应一遍扫描的工作方式只 是逻辑上的。 由于多次扫描的方式需要大量的存储空间存放中

间表示,并且也会增加一些不必要的输入输出操作,
因此,编译器往往是把若干个阶段的工作结合起来,

对应一遍扫描,从而减少对程序的扫描遍数。

编译原理

第1章 编译简介

(44)

2. 编译器扫描的遍数
原理上希望扫描的遍数越少越好,这就必须保证两点:

(1) 为编译器的运行提供足够大的空间。由于若干阶段
的工作合并在一遍中完成,所以处理各阶段工作的 程序都随时准备运行,而且各阶段所需的信息也要 同时放在内存中。 (2) 在语言的设计上和编译技术上为减少扫描遍数提供 支持。在语言设计上,尽量使得编译器可以仅从已 扫描过的内容就得到足够的信息。
编译原理 第1章 编译简介 (45)

1.5 编译器的构造工具
编译器本身也是一个程序,那么用什么编写编译器呢? 早期人

们用汇编语言编写编译器。众所周知,人工可以编写出效率很高的
程序,但由于编译器本身是一个十分复杂的系统(如早期的 FORTRAN用了18人年才完成),而用汇编语言编写编译器的效率很 低,往往给实现带来很大困难。 因此,除了特别需要,人们早已不再用汇编语言编写完整的编

译器。现在常用通用程序设计语言编写编译器,它的效率比汇编语
言要高得多。不过,用单纯程序设计的方法来对付编译器这样的庞 然大物也显得不够。
编译原理 第1章 编译简介 (46)

为此,需要一些专门的编译器编写工具来支持编译器某些部 分的自动生成。比较成熟和通用的工具有词法分析器生成器和语 法分析器生成器,如被广泛应用的LEX和YACC。 另外,还有一些工具,如语法制导翻译工具(用于语义分析)、 自动的代码生成器(用于中间代码生成和目标代码生成)和数据流 工具(用于优化)等。这些工具的共同特点是,仅需要对语言相应

部分的特征进行描述,而把生成算法的过程隐蔽起来,同时所生
成的部分可以很容易地并入到编译器的其它部分中。 因此,这些工具往往与某程序设计语言联系在一起,如与

LEX和YACC联系的程序设计语言是C。

编译原理

第1章 编译简介

(47)

本章小结
编译原理是一门理论和实践并重的课程,大部分同学都会

感到学习这门课程十分困难。关键问题是应该掌握好的学习方
法,在此我们强调两点: ① 牢固掌握基本概念,这要进行大量的阅读,并通过阅读 加深理解; ② 灵活使用基本方法,这要在阅读理解的基础上做好习题 和上机作业。

编译原理

第1章 编译简介

(48)

(1) 语言的翻译
① 面向人类的高级语言,如通用程序设计语言Pascal、 C/C++、Java、Ada以及一些有特定应用领域的语言等;

② 面向机器的低级语言,如汇编语言和二进制机器代码
等; ③ 编译器与汇编器,把高级语言翻译成低级语言的程序 被称为编译器(或解释器),把汇编语言翻译成机器代码的程 序被称为汇编器。编译器与解释器,编译器首先把源代码翻

译成目标代码,然后执行目标代码,解释器一边翻译源代码,
一边执行解释后的代码。

编译原理

第1章 编译简介

(49)

(2) 编译器的基本组成:以阶段划分编译器,阶段包括

词法分析、语法分析、语义分析、中间代码生成、中间代
码优化、目标代码生成、符号表管理以及出错处理。

(3) 编译器的分析-综合模式:把编译器分为前端和后
端。前端称为分析,它的输出与机器无关;后端称为综合, 以前端的输出为输入,其输出与具体机器指令密切相关。 编译器的这种划分方式,有利于编译器的开发、维护与移 植。

编译原理

第1章 编译简介

(50)

(4) 编译器的扫描遍数:对程序(源程序、中间表示等)的一

次完整的扫描称为一遍。影响扫描遍数的因素是多样的,减少
扫描遍数的思路也是多样的。 (5) 编译器的编写工具:特别需要了解的是词法分析器和语 法分析器的编写工具。

编译原理

第1章 编译简介

(51)

编译原理的学习意义
? 有助于提高编写程序的能力

有助于语法理解和掌握;
有助于程序调试和排错;

有助于形成良好的程序书写风格;
……

编译原理

第1章 编译简介

(52)

编译原理的学习意义
? 有助于相关课程学习 有助于形成专业知识整体结构; 有助于操作系统、系统结构等课程的理解; …… 编程语言
编译系统 操作系统 硬件

编译原理

第1章 编译简介

(53)

交叉编译:源程序 编译原理的学习意义 的编译(或汇编)

? 可以应用于相关研究领域 如:嵌入式系统、语音识别等

与目标程序的执行 不在同一机器上完 成时,称这种编译 (汇编)为交叉编 译(汇编)。

交叉编译器 编辑器 仿真器 代码优化器 连接器

交叉调试器

下载器

嵌入式应用

嵌入式操作系统

宿主机操作系统及支撑环境

编译原理

第1章 编译简介

(54)

编译原理的学习意义
? 为设计开发新型高级语言编译器打基础
每种高级语言针对不同的编程需要,如: C—编制操作系统,功能强大,代码效率高 Fortran—主要用于科学计算编程,函数丰富 Java—支持程序可移植性

编译原理

第1章 编译简介

(55)

例1.1 某C语言源程序中书写了语句: abc def=23*y;

函数调用:
x=sqrt(-100); 请问报错各将发生在编译的什么阶段? A. 词法分析 C. 语义分析 B. 语法分析 D. 编译过程不报错

例1.2 如果在C语言的源程序中,语句括号使用中缺少了一 个“{”,由此引起编译过程中报错,问在编译的什么部 分查出的错误?为什么?
编译原理 第1章 编译简介 (56)


相关文章:
第1章编译原理概述
编译原理》教案 第 1 章 编译原理概述 第1章生成过程和构造工具。 编译原理...简单介绍编译程序的发展历史(教材第 2 页) 。 1.2 编译过程和编译程序的结构...
编译原理第1章
编译原理第1章_理学_高等教育_教育专区。西南科技大学编译原理课后作业第一章 编译概述 2.典型的编译程序可划分为几部分?各部分的主要功能是什么?每部分都是必不...
第1章 简介
第1章 简介_计算机软件及应用_IT/计算机_专业资料。第 1 章 简介 Linux 具有.... . */ rest_init(); } 你现在已经为编译内核揭开了序幕,进入内核源代码并...
第1章简介
在本章,我们将介绍程序设计语言的一些基本符号和概念,另外,我们也会 简短地介绍一下语言的编译器,然而,本书不准备对编译技术进行详细的讨论。 1.1 什么是程序...
第1章 编译系统概述(Tsu版电子教案)
第1 章 编译系统概述(Tsu 版电子教案) 第1页 共5页 第 1 章 编译系统概述 翻译系统(编译系统) 、操作系统、数据库管理系统是计算机的三大系统软件。 1.1 ...
第1章 Java简介
第1章 Java 简介 Java 编程应用范围广泛,而且随着语言本身以及关联的函数库的...Java 编译器(Java Compiler)将编写的 Java 源代码转换为一个由字节码(bytecode...
01-第1章 概述
17页 2财富值 01第1章 编译概述 34页 免费喜欢此文档的还喜欢 31-T2000网络...章 1.1 Centrex 业务介绍随着计算机技术、多媒体技术的飞速发展,电信网中原有的...
第1章 编译原理
编译原理 第一章 引言 第一章 知识结构: 引 论 翻译程序的分类 编译程序 编译方法与解释方法 编译程序的分类 编译过程 编译过程 编译程序的组成 编译程序的功能...
第1章 Linux简介
第1 章 Linux 简介 第1章 Linux 简介 章让用户很详细地了解现有操作系统的...(GNU 的 C 编译器) ,bash(shell 命令) ,还有大部分 Linux 用户所熟知的...
第1章 简介
第1章 简介第1章 简介隐藏>> 第一章 简介 1.1 什么是 Windows Sockets 规范...这个改变是为 了适应 Microsoft C 编译器和 Borland C 编译器对返回类型为四...
更多相关标签:
红楼梦章回简介1 120 | 编译原理简介 | 编译原理第三章答案 | 编译原理第四章答案 | 编译原理第五章答案 | 编译原理第六章答案 | 编译原理第七章答案 | 编译原理第八章答案 |