编译原理-第一章 引论-C和Java编译系统
C语言的编译系统:
- 预处理:实现文件包含#include<stdio.h>;实现宏展开#define pi 3.1415926;条件编译#if、#ifdef
- 汇编器:对输入进行两遍扫描。
- 第一遍:汇编器扫描输入,将表示存储单元的所有标识符都存入符号表,并分配地址。
- 第二遍:汇编器再次扫描输入,把每个操作码翻译成机器语言中代表那个操作的位串,并把代表存储单元的每个标识符翻译成为符号表中为这个标识符分配的地址。
- 连接器:收集、组织程序所需的不同代码和数据。
- 静态连接器:将多个可重定位目标文件组成一个可执行目标文件(也可以组成一个可重定位目标文件)。
- 动态连接器:支持在内存中的可执行程序在执行时与共享目标文件进行动态的链接。
JAVA语言的编译系统:
- 一般的高级语言程序如果要在不同的平台上运行,至少需要编译成不同的目标代码。
- Java虚拟机技术是实现Java的平台无关性特点的关键。
- Java虚拟机语言(简称JVML)
- JVML程序只需与虚拟机交互,不需要关心底层的硬件和操作系统。
参考-慕课-苏州大学-王中卿老师