1)简述编译程序与翻译程序、汇编程序的联系与区别。
编译程序完成从源码到可执行程序的工作,是一个完整的过程。翻译程序将高级语言翻译至低级语言。汇编程序将汇编代码翻译成二进制的机器码。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
词法分析:以字符串形式读入源代码,提取保留字、标识符和运算符。
语法分析:将提取出的词列表分解成语法树。
语义分析:检查语义错误,例如运算符的作用对象是否合法。
中间代码生成:将源程序变成一种内部表示形式,便于翻译成目标代码。
代码优化:对中间代码进行变换,例如源码中含有常量运算,则事先计算好运算结果以提高目标程序运行效率。
目标代码生成:将优化后的中间代码翻译为特定机器上的二进制的机器码或汇编代码。
3)简述解释程序与编译程序的区别。
编译程序将源码翻译为二进制可执行程序或字节码文件,可直接在特定机器上执行或依赖虚拟机运行,例如gcc和javac。解释程序逐个获取语句并执行,直接输出运行结果,例如cpython和Linux Bash