ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

编译原理及编译程序构造-绪论

2021-09-13 09:31:04  阅读:235  来源: 互联网

标签:绪论 源程序 程序 目标程序 编译 生成 编译程序


编译原理及编译程序构造(张莉)

1 绪论

编译:把高级程序语言翻译成汇编语言或机器语言;

  • 计算机组成五部分:输入、输出、控制器、运算器、存储器
  • 源程序:程序语言处理系统的输入程序;
  • 目标程序:能在计算机上执行的程序,程序语言处理系统的输出程序;
  • 翻译程序:把某种语言程序变换为与之等价的别的语言程序的程序称为翻译程序或变换程序;
  • 汇编程序:把汇编语言程序转换为机器语言程序的程序;
  • 编译程序:把高级语言的源程序变换为语义等价的某种目标语言的程序;
  • 解释程序:对源语言的代码或者编译得到的中间语言进行解释执行的程序;
  • 遍:对源程序或源程序的中间形式从头到尾扫描一次并做相关的加工处理,生成新的源程序中间形式或目标程序,称为一遍;
    • 分遍好处是减少对内存容量的要求,但增加了重复性工作;
  • 编译-解释执行:先把源程序编译成中间代码,再对中间代码解释执行;

编译5个阶段:词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序

  • 词法分析:把字符串形式的源程序分解为具有独立语法意义的单词符号token;
    • 单词:语言的基本语法单位;包括语言定义的关键字或保留字、标识符、常数、分界符(运算符)
  • 语法分析:根据语法规则分析语法成分,检查语法正确性。
  • 语义分析:确定源程序的意义,生成中间代码;
  • 代码优化:确保源代码功能不变的前提下,使得目标代码更加简短,以尽量减少存储时间和运行时间;
  • 生成目标程序:由中间代码生成目标程序

典型的编译程序具有7个逻辑部分,词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序、符号表管理和出错处理;

  • 符号表管理:用于保存每个标识符及其属性信息的数据结构;
  • 出错处理:编译过程中检测道错误后立即处理错误、报告错误信息,并继续编译检测其他错误;

根据编译程序各部分功能,将编译程序分为前端和后端

  • 把与源程序有关的编译部分成为前端;
  • 把与目标机有关的部分成为后端;
  • 好处:采用同一个编译程序的前端,只改写后端就可以生成不同目标机上的相同源语言的编译程序;

第一周作业

1.解释名词

  • 源程序:程序语言处理系统的输入程序;
  • 目标程序:能在计算机上执行的程序,程序语言处理系统的输出程序;
  • 翻译程序:把某种语言程序变换为与之等价的别的语言程序的程序称为翻译程序或变换程序;
  • 汇编程序:把汇编语言程序转换为机器语言程序的程序;
  • 编译程序:把高级语言的源程序变换为语义等价的某种目标语言的程序;
  • 解释程序:对源语言的代码或者编译得到的中间语言进行解释执行的程序;
  • 遍:对源程序或源程序的中间形式从头到尾扫描一次并做相关的加工处理,生成新的源程序中间形式或目标程序,称为一遍;

2.典型的编译程序具有7个逻辑部分,词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序、符号表管理和出错处理;

  • 词法分析:把字符串形式的源程序分解为具有独立语法意义的单词符号token;
  • 语法分析:根据语法规则分析语法成分,检查语法正确性。
  • 语义分析:确定源程序的意义,生成中间代码;
  • 代码优化:确保源代码功能不变的前提下,使得目标代码更加简短,以尽量减少存储时间和运行时间;
  • 生成目标程序:由中间代码生成目标程序
  • 符号表管理:用于保存每个标识符及其属性信息的数据结构;
  • 出错处理:编译过程中检测道错误后立即处理错误、报告错误信息,并继续编译检测其他错误;

3.根据编译程序各部分功能,将编译程序分为前端和后端;

  • 把与源程序有关的编译部分成为前端;
  • 把与目标机有关的部分成为后端;
  • 好处:采用同一个编译程序的前端,只改写后端就可以生成不同目标机上的相同源语言的编译程序;

标签:绪论,源程序,程序,目标程序,编译,生成,编译程序
来源: https://blog.csdn.net/weixin_45329799/article/details/120260480

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有