编译原理 1 绪论

本文介绍了编译器的工作原理,从高级语言的编译过程开始,包括词法分析、语法分析、语义分析,直至中间代码生成和目标代码优化。词法分析将源代码转换为词法单元,语法分析构造语法分析树,语义分析则进行类型检查和属性收集。编译器后端涉及中间代码生成和目标代码优化,确保程序在目标机器上的高效运行。
摘要由CSDN通过智能技术生成

1 绪论

1.1 什么是编译

计算机程序设计语言包括三个层次:

机器语言:machine language 可被计算机直接理解,例如机器语言指令:C706 0000 0002 (此处为16进制形式),其中C706表示移入操作,0000和 0002是两个操作数

汇编语言:assembly language 引入了助记符,如MOV X, 2 ;其MOV是助记符,X和2时量个操作数,汇编语言依赖于特定的机器,非计算机人员使用受限

高级语言:high level language 类似于数学定义或自然语言的简洁形式,如 x=2. 高级语言和汇编语言最终都要翻译成由0和1构成的二进制机器语言才能被执行

编译:将高级语言翻译成汇编语言或机器语言的过程

编译器在语言处理系统中的位置:源程序 - 预处理器 - 经过预处理的源程序 - 编译器 - 汇编语言程序 - 汇编器 - 可重定位的机器代码 - 连接器/加载器 - 目标机器代码

预处理器:把存放在不同文件中的源程序聚合在一起;将称为宏的缩写语句转换为原始语句

可重定位: 在内存中存放的起始位置L是不固定的;起始位置 + 相对位置 = 绝对地址

加载器:修改可重定位地址,将修改后的指令和数据放在内存中的适当位置

链接器:大型项目会分为多个部分进行编译,可重定位的机器代码需要与其他库文件和其他可重定位目标程序链接;还解决外部内存的地址问题

1.2 编译系统的结构

以英译汉为例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值