【编译原理】学习笔记1-概论

1.     编译

编译是一种翻译,就像把英文翻译成中文,编译通常是指把一种编程语言翻译成计算机能够理解的机器语言。

编译器与解释器:编译器一次性把编程语言全部翻译成机器语言,形成一个“可执行文件”,可以重复运行而不需要再进行解释,可以理解为把一本英文小说翻译成中文并记录。而解释器一边解释编程语言一边运行,再次运行还要重新解释,类似于同声传译。

2.     编译的过程

编译的过程分为词法分析、语法分析、中间代码生成、机器无关代码优化、目标代码生成、目标代码优化。

词法:任何语言的基本元素都是单词,词法就是一个词的类别,比如汉语中词通常分为动词、名词、形容词、副词等,每个类别代表了它不同的用处。

词法分析:词法分析就是把输入的一串单词进行分类,并把它们转换成更适合机器的存储方式,我们称之为词法单元(token)。

语法和语法分析:语法就是不同的单词按照某种规则组成短语,。语法分析就是将词法分析产生的token序列中找出符合规则的短语,也就是分析各个单词之间的关系,并将短语记录为适合机器理解的数据结构。

语义分析:在自然语言翻译中,所谓的语义其实就是如何用中文解释英语短语。语义分析就是把标识符的短语解释为计算机理解的结构,对于变量,就是变量的类型、存储位置、长度、值等,而对于函数,就是函数作用域、参数、返回值等。除此之外,还需要检查语义是否不符合规则。

中间语言:就像汉语有很多方言一样,虽然现代计算机的原理大同小异,但是机器语言并不尽相同,所以机器语言往往根据平台的不同而不同,所以源语言首先翻译成中间语言进行过度,并且进行优化。中间语言相对源语言更容易翻译成机器语言,并且更具有通用性,故也称为机器无关代码,好比你只有一个会英语和普通话但不会方言的翻译和只会普通话和方言的方言专家,你想把英语翻译成方言就需要先翻译成普通话这个相对更通用的语言。

目标代码生成:把中间语言映射到目标语言,这个过程的一个重要任务就是为程序中的变量合理分配寄存器。

猜你喜欢

转载自www.cnblogs.com/tiumo/p/12664755.html