编译原理-第一章 引论-C和Java编译系统
C语言的编译系统:
- 预处理:实现文件包含#include<stdio.h>;实现宏展开#define pi 3.1415926;条件编译#if、#ifdef
- 汇编器:对输入进行两遍扫描。
- 第一遍:汇编器扫描输入,将表示存储单元的所有标识符都存入符号表,并分配地址。
- 第二遍:汇编器再次扫描输入,把每个操作码翻译成机器语言中代表那个操作的位串,并把代表存储单元的每个标识符翻译成为符号表中为这个标识符分配的地址。
- 连接器:收集、组织程序所需的不同代码和数据。
- 静态连接器:将多个可重定位目标文件组成一个可执行目标文件(也可以组成一个可重定位目标文件)。
- 动态连接器:支持在内存中的可执行程序在执行时与共享目标文件进行动态的链接。
JAVA语言的编译系统:
- 一般的高级语言程序如果要在不同的平台上运行,至少需要编译成不同的目标代码。
- 既要编译,又要解释;编译只有一次,程序执行时解释执行;通过编译器,把Java程序翻译成一种中间代码——字节码,然后通过JVM解释成相应平台的语言。
- Java虚拟机技术是实现Java的平台无关性特点的关键。
- Java虚拟机语言(简称JVML)
- JVML程序只需与虚拟机交互,不需要关心底层的硬件和操作系统。
参考-慕课-苏州大学-王中卿老师
作者:方知有
Motto: 热爱可抵岁月漫长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
所有评论和私信都会在第一时间处理,如有问题或建议,请多多赐教!
支持博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!