程序语言
程序语言是表达编程思想、描述计算过程的规范性语言。一般来说,程序语言可以分为低级语言和高级语言两大类。低级语言通常也被称为面向机器语言。
计算机只能理解和执行机器语言,使用语言处理程序可以使计算机能够理解使用某一程序设计语言书写的程序,语言处理程序包括编译类和解释类
汇编系统
汇编程序
汇编程序的基本工作如下:
(1)将每一条可执行汇编指令转换成对应的机器指令。
(2)处理源程序中出现的伪指令。
装配程序
装配程序也称为连接程序。该程序主要完成两个任务:装入和连接。
装入是指读入可复位位的机器代码,修改复位位的地址,把修改后的指令和数据放在内存的适当位置或者形成可执行文件。
连接是把几个可复位位的机器代码文件连接成一个可执行程序,这些文件可以是分别汇编得到的,也可以是系统提供的程序库机器代码。
宏指令
宏指令一经定义,用户就可以在程序段其他地方书写这条指令,而将宏指令替换成原来指令序列的工作留给宏指令处理程序去完成。
编译系统
编译程序的职能是把使用某程序设计语言书写的程序翻译为等价的机器语言程序,所谓等价是指目标程序执行源程序的任何预定功能。一般来说,编译程序分为以下几个部分:词法分析、语法分析和语义分析、代码优化、代码生成和符号表管理。
词法分析程序是编译程序的第一个部分,它的输入是源程序中由字符组成的符号。编译程序需要把程序的这种外部形式转换成适合后续程序处理的形式,其功能如下。
(1)识别出源程序中意义独立的最小词法单位——单词,并且确定其类型(例如是标识符、关键字、操作符还是数字等)。
(2)删除无用的空格、回车和其他与输入介质有关的无用符号,以及程序注释。
(3)报告分析时的错误。
语法分析程序根据特定程序设计语言的文法规则,检查单词串是否符合这些规则。
语义分析程序根据语法分析程序分解出其中一个文法结构就进行相应的语义检查,在有需要的时候输出相应的中间代码。这里的中间代码可以理解为假想的虚拟机的指令,其执行次序反映了源程序的原始定义。语法和语义分析程序是编译程序中的关键部分。
代码优化程序在不改变代码所完成的工作的前提下对中间代码进行改动,使其变成一种更有效的形式。
符号表中登记了源程序中出现的每一个标识符及其属性
错误管理程序是在分析程序发现源程序有错误而无法继续工作时进行工作的,其任务是记录并向用户报告错误及其类型和位置,或者尝试进行某种恢复工作。
代码生成是编译程序的最后一个阶段,它将程序的中间代码表示作为输入,并产生等价的目标代码作为输出。
中间代码
常见的中间代码表示包括:语法树、后缀式和三地址代码
后缀表示又称为逆波兰表示,最初是用于表示表达式的计算次序,在后缀表示中,运算符紧跟在相应的运算对象后。例如表达式(A+B)*C,使用后缀表示为AB+C*。
在后缀表示中,运算符既表示了对运算对象所执行的运算,也表示了这一运算之前的中间结果。因此在后缀表示中不需要使用括号。
解释系统
解释程序是一种语言处理程序,它实际是一台虚拟的机器,直接理解执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。
反编译和交叉编译
反汇编:把目标代码转为汇编代码的过程
反编译:可执行文件变为高级语言程序
交叉编译:在一个平台上生成另一个平台的可执行代码
有限自动机:初始时,依次读取字符进行相应状态转移,直到输入串结束或找不到状态转移为止
类的相关概念
类的一般形式如下:
Class name {
Public:
类的公有接口
Private:
私有成员函数
私有数据成员定义
};
类成员的3种不同访问权限:
(1)共有成员(Public):可以在类外和子类中访问
(2)私有成员(Private):只能被该类的成员函数访问,子类和外部不能被访问
(3)保护成员(Protected):只能被该类的成员函数或派生类的成员函数访问,不能被外部访问