程序设计语言源程序的执行方式 例假设有源程序:read();write("x=",x); read()方 翻译程序 目标程序 write("x=",x); 3 目标程序 X=3 read(x); 解释程序 > X=3 write("x=",x); 3
6 程序设计语言源程序的执行方式 例 假设有源程序:read(x); write("x=", x); read(x); write("x=", x); 目标程序 目标程序 3 X=3 read(x); write("x=", x); 翻译程序 解释程序 3 X=3
编译程序和解释程序p8 最主要区别 是否生成目标程序 解释系统 运行时的存储分配 源程序 源程序缓冲区 工作单元及名字表 目标代码区 名字表 标号表 目标代码缓冲区 缓冲区(输入输出) 编译程序用中间表 数据区 示及各种表格 栈区 编译程序编译时和运行时 解释程序 存储区内容 存储区内容
8 编译程序和解释程序 p8 最主要区别 是否生成目标程序 运行时的存储分配 源程序缓冲区 名字表 目标代码缓冲区 编译程序用中间表 示及各种表格 目标代码区 数据区 解释系统 源程序 工作单元及名字表 标号表 缓冲区(输入输出) 栈区 编译程序编译时和运行时 存储区内容 解释程序 存储区内容
编译程序和解释程序 Basic、Lisp、SQL解释程序、Unix命令语言 解释程序及很多脚本语言Javascript等都解 释执行的 C、C+等语言是编译执行的。 Java语言的处理环境既有编译程序,也有解 释程序,见图1.15(p9) JVM Java-→编译程序→Bytecode→解释程序 “一次编译,到处执行” 悲
9 编译程序和解释程序 Basic、Lisp、SQL解释程序、Unix命令语言 解释程序及很多脚本语言Javascript等都解 释执行的 C、C++等语言是编译执行的。 Java语言的处理环境既有编译程序,也有解 释程序,见图1.15(p9) Java → 编译程序 → Bytecode →解释程序 “一次编译,到处执行” JVM
需预处理的源程序 高级语言程序 预处理程序 的处理过程P1 源程序 ▣ 编译程序 ■ 目标汇编程序 汇编程序 可再装配的机器代码 地址均为相对地址,不 能直接执行 装配/连接-编译程序 可再装配目标文件 章节目录 绝对机器代码 10
10 高级语言程序 的处理过程 P1 需预处理的源程序 预处理程序 源程序 编译程序 目标汇编程序 汇编程序 可再装配的机器代码 装配/连接-编译程序 可再装配目标文件 绝对机器代码 章节目录 地址均为相对地址,不 能直接执行
1.2.1编译过程概述p2 编译过程可分为下面6个阶段(图1.10) 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 表格管理和出错处理
11 1.2.1编译过程概述 p2 编译过程可分为下面6个阶段(图1.10) 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 表格管理和出错处理