手机版

第二章 计算机语言的实现

发布时间:2024-08-29   来源:未知    
字号:

第二章

计算机语言的实现命令,问题:效率低下

程序的解释执行 如:BASIC、DOS

输入数据

源程序

解释程序

计算结果

源程序

程序的编译执行 目标程序: 机器语言编译程序

汇编语言

目标程序

输入数据

运行系统

计算结果

2.1 编译系统的需求分析 源程序的分析 词法、语法、语义

目标程序的综合 语句的翻译、代码生成

标识符与数据目标的绑定(binding) 变量:

存储单元 函数: 目标代码序列

2.2 编译过程自然语言的翻译过程: I wish you success 主语 谓语 间接宾语 直接宾语 识别单词(拼写正确)、语法检查(顺序 格式)、 语义理解(合理)、组织译文(符合原文 、通顺)

一个 C 程序的编译过程源程序: main( ) { printf(“hello”); } 1. 词法分析 分析字符序列; 识别单词(种别、属 性) 查词法错误; 标识符登记;

结果 IDN ( ) { IDN ( STR ) ; }

main

printf

hello

2. 语法分析分析单词序列; 识别语法结构;

语句表达式 函数调用 ( 表达式 常数 字符串 ) ;

标识符

查语法错误; 构造分析树;

3. 语义分析 确认标识符的属性 类型、作用域等

语义检查 运算的合法性、取值范围等

子程序的静态绑定 代码存储的相对地址

变量的静态绑定 数据存储的相对地址

4. 生成中间代码 中间语言 简单规范 机器无关

例: printf(“hello”)的翻 译(三地址代码)x := s (赋值) param x (参数) call f (函数调用)

易于优化与转换

按照语法分析树生

成中间语言代码 运算指令 控制指令

注释s 是 hello 的地址 f 是函数 printf 的地址

5.

代码优化

中间代码的优化处理,以求提高执行效率

6.

目标代码生成

将中间代码转换成目标机上的机器指令代

码或汇编代码MOV R0, #12, 10000001 0001 1100 ADD R0, #4 10000010 0001 0100 MUL R0, R2 11000100 0001 0010 汇编指令代码 机器指令代码

编译程序的结构表格管理 中 词 法 分 析 语 法 分 析 语 义 分 析 间 代 码 生 成 错误处理 代 码 优 化 目 标 代 码 生 成

其他模块 表格管理 辅助语法检查、语义检查 完成静态绑定、管理编译过程

错误处理 词法:拼写... 语法:语句结构、表达式结构... 语义:类型不匹配...

编译程序的组织结构

编译前端 1.

2.

目标机无关部分 词法分析、语法分析、中间代码生成 语义分析、中间代码优化 目标机相关部分 目标代码优化 目标代码生成 常见:前段1.2.和后端1.2.

编译后端

1.2.

多遍扫描

程序设计

环境

集成化的程序设计环境 编辑程序 编译程序 连接程序

----- 将目标程序连接成可执行程序 调试工具 ----- 跟踪、分析

常见: Turbo

C/C++ Visual Studio for C/C++, Basic etc JBuilder, BlueJ, NetBean

2.3 编译技术的通用性把复杂数据看作一条语句 数据格式的分析 利用词法分析、语法分析方法

数据处理的框架 基于语法制导的语义处理框架

编译技术可以用于各种复杂数据的分

析处理

例2-1(1/2)DOS 命令 date 的输出格式例:9-2-1993、09-03-1993、9-03-93

语法date → month - day - year

词法month → DIG DIG | DIG day → DIG DIG | DIG year → DIG DIG | DIG DIG DIG DIG

例2-1(2/2)语义year(年)、month(月)、day(日)

语义约束条件0 < month.value < 13 0 < day.value < 32,31,30 0 < year.value < 10000

第二章 计算机语言的实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)