程序设计语言基础

来源:互联网 发布:Linux解压rar 编辑:程序博客网 时间:2024/06/05 15:02

14:00

汇编语言:
指令语句:
机械指令语句,汇编后能产生相应机械码
分为传送指令 算术运算指令 逻辑运算指令 移位指令 转移指令 和处理机指令
伪指令语句:
汇编时完成 不产生机械代码 函数
宏指令语句:
可多次复用的代码段 类方法
汇编程序:
汇编程序要扫描两次
第一次:
定义值和创建符号表ST 记录符号的值
有一个固定的机械表MOT1记录每条机械指令的记忆码和指令长度
单位地址记录器:LC 初值为0
单位计数器LC置初值0
打开源文件
读取第一条语句
While(当前语句不是END){
If(当前语句有标号)
将标号和单元计数器的值填入ST
If(当前语句是可执行的汇编语句)查找MOT1表的当前指令长度K LC=LC+K;
If(当前语句是伪指令) 查找并调用相应指令
If(当前操作码是非法记忆码) 调用出错子程序
读下一条字句
}
关闭程序
第二次:
机械码表MOT2 含机械指令助记符、机械指令的二进制操作码binary-cade、格式type、长度length
伪指令表POT2 伪指令记忆码和子程序入口
把汇编程序翻译为二进制机械码 (把机械指令助记符转为二进制机械指令操作码 查找MOT表实现 二是求出各操作数的值)
编译程序基本原理:
编译过程
词法分析:
识别出单元符号
语法分析:
是否构成一个语法正常的语句
语义分析:
检查是否包含静态语义错误 收集类型信息
中间代码生成:
采用四元式:
(运算符,运算对象1,运算对象2,运算结果)
代码优化:
简化中间层代码
目标代码生成:
把中间代码生成相应的汇编指令码 或 中间码
符号表管理:
辅助正确性检查和代码生成
出错处理:
编译出错时会暂时修复 让程序找到更多错误
2.文法和语句
Vn终结符Vt非终结符
G=(Vn,Vt,P,S);P是产生式有限集合
Vn∩Vt=null;
V=Vn∪Vt;V为符号表
句子和语言:

有限自动机:DFA
词法分析器:
1) 用正规式中描述语言的单词构成规则
2) 为每个正规式描述语言的单词构造规则
3) 为每个正规式构造NFA 它识别正规式的构造集
4) 将构造出的NFA转化为DFA
5) 对DFA进行最小化处理 使其最简化
6) 从DFA构造词法分析器
语法分析:
语法制导翻译和中间代码生成
后缀式:构建颗树 后续遍历
树形表示:
三元式
四元式
解释型语言:
第一部分:
分析 语法、词法、语义 翻译中间码
第二部分:
对中间代码解释执行
编译与解释的异同:
效率:
编译更高
灵活性:
解释更灵活
可移植性:
在其它编译或运行环境的特性

原创粉丝点击