1.基础知识
低级语言:机器语言、汇编语言
高级语言:
汇编程序
编译程序:1.生成目标程序OBJ;2.执行OBJ文件 效率高,占用资源小;兼容性差
解释程序:每个语句逐一解释执行 可移植性好,开发速度快,与用户通讯方便;效率低
2.编译系统基本原理(3-5分)
编译程序:
6个阶段:
词法分析(关键字、标识符、常量、运算符、界符……)
语法分析(表达式、赋值、循环,是否符合语法规则),语句的语法是否逻辑正确(自上而下分析法、自下向上分析法)
语义分析(类型分析、检查),赋值语句左右端的类型是否匹配,除数是否为0……
中间代码生成(逆波兰式、四元式、三元式、树),代码方式与具体的机器无关,可移植性,简单且明确的记号系统
代码优化(变换、改造),更省时间、空间
目标代码生成(变换成特定机器上的绝对指令代码,可重定位的指令代码、汇编指令代码),与硬件系统的结构、指令的含义有关
状态转换图:状态转换机
正规表达式:正规式
确定的有限状态机;DFA
不确定的有限状态机:NFA
3.程序语言的控制结构
表达式:前缀表达式(波兰表示法,从右向左扫)、中缀表达式(中缀记法)、后缀表达式(逆波兰法,从左至右)
操作符优先级:
(1)指针最优,单目运算优于双目运算(正负号)
(2)先乘除,后加减
(3)先算数运算,后移位运算,最后位运算 1<<3+2&7 (1<<(3+2))&7
(4)逻辑运算最后运算
过程控制:
传值调用:数据传送是单向的(实参指向形参,形参无法返回实参)
引用调用(地址调用):数据传送是双向的