编译、汇编、翻译原理知识概括

机器语言,汇编语言,高级语言

高级语言和汇编语言都必须转化成机器语言才可以被计算机执行。

机器语言:
机器语言是由机器指令构成的,每一条机器指令都是由0和1构成的序列,由于机器语言是由0和1构成的序列,这样人们编写起来比较麻烦和容易出错,为此发明了汇编语言。

汇编语言:
汇编语言由机器指令符号化后的语言,汇编语言编写的程序移植性比较差,因为它所编写的程序是跟具体的计算机体系结构密切相关的,为此发明了高级语言。编译、汇编、翻译原理知识概括

高级语言:
高级语言移植性好,语法和结构更类似汉字或者普通英文,且由于远离对硬件的直接操作,使得一般人更容易学习。
编译、汇编、翻译原理知识概括

翻译程序、汇编程序、编译程序

翻译程序:
具有把汇编语言或高级语言编写的程序转换成等价的机器语言程序的功能的程序。

汇编程序:
具有把汇编语言编写的陈旭转换成等价的机器语言程序的功能的程序。

编译程序:
具有把高级语言编写的程序转换成等价的机器语言程序的功能的程序。

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:

  • 1.解释类
    执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序,典型的解释型的高级语言有BASIC。编译、汇编、翻译原理知识概括

  • 2.编译类
    编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Delphi等。编译、汇编、翻译原理知识概括

编译程序

简介:
编译、汇编、翻译原理知识概括
编译器功能结构图:
编译、汇编、翻译原理知识概括

  • 词法分析:字符流->单词流编译、汇编、翻译原理知识概括

  • 语法分析器:单词流->语法树编译、汇编、翻译原理知识概括

  • 语义分析器:
    ①收集标识符的属性信息:类型(Type)、种属(Kind)、存储位置、长度、值、作用域、参数和返回值信息
    ②语义检查:变量或过程未经声明就使用、变量或过程名重复声明、运算分量类型不匹配、操作符与操作数之间的类型不匹配编译、汇编、翻译原理知识概括

  • 中间代码生成器:抽象语法树->中间表示(与平台无关的抽象程序):
    ①易于产生②易于翻译成目标程序③三地址码④四元式编译、汇编、翻译原理知识概括

  • 代码优化器:试图改进中间代码,以产生执行速度较快的机器代码:编译、汇编、翻译原理知识概括

  • 代码生成器:生成可重定位的机器代码或汇编代码:编译、汇编、翻译原理知识概括

  • 符号管理表:
    ①基本功能是记录源程序中使用的标识符,
    ②并收集与每个标识符相关的各种属性信息,
    ③并将它们记载到符号表中。编译、汇编、翻译原理知识概括

  • 错误处理器:
    ①处理方式:报告错误,应继续编译
    ②大部分错误在语法分析、语义分析阶段检测出来
    ③词法分析:字符无法构成合法单词
    ④语法分析:单词流违反语法结构规则
    ⑤语义分析:语法结构正确,但无实际意义
    编译、汇编、翻译原理知识概括

编译程序的前端和后端:

编译、汇编、翻译原理知识概括
编译程序和程序设计环境:

  • 1.编辑器:
    编写代码的程序
  • 2.预处理器
    预处理现在已经被边缘化了,一般与编译器一起。
  • 3.编译器
    编译成目标程序。
  • 3.连接程序
    链接库函数形成可执行程序。
  • 4.装入程序
    从外存中装入内存运行。
  • 5.调试程序
    调试bug。