当前位置: 首页 > news >正文

一、编译原理(引论)

目录

【一】、引论

一、编译器 

1、编译器

2、编译器与解释器

3、编译器结构


【一】、引论

一、编译器 

1、编译器

(1)编译器:将人类易懂的 高级语言 翻译成 硬件可执行的目标机器语言
(2) 高级语言
直接面向开发者
与数学公式类似
编程效率高
(3)机器语言
驱动硬件完成具体任务
编程效率低

2、编译器与解释器

(1)编译器 (compiler)

读入以某种语言编写的 源程序
输出等价的用另一种语言编写的 目标程序
通常目标程序是 可执行
如C语言编译器GCC
(2) 解释器 (interpreter)
直接利用用户提供的输入,执行源程序中指定的操作
逐行转译运行,不需要生成和执行目标程序
⚫如Python解释器

3、编译器结构

编译器=分析部分(前端部分是 机器无关) +综合部分 (后端部分是 机器相关)
(1) 分析 (analysis) 部分(前端)
把源程序分解成组成要素,以及相应的语法结构
使用这个结构创建源程序的中间表示
同时收集和源程序相关的信息,存放到符号表
(2) 综合 (synthesis) 部分(后端)
根据中间表示和符号表信息构造目标程序

二、编译程序和解释程序

1、编译程序

高级语言设计的源程序(面向人的)翻译成等价的低级程序设计语言(面向硬件的)、即机器语言或汇编语言。

2、源程序的两种执行方式

(1)翻译:使用翻译程序,将源程序翻译成为低级语言目标程序,然后执行目标程序。

(2)解释:使用解释程序,对源程序逐个语句边解释边执行。

3、编译程序和解释程序的主要区别

是否生成目标程序,运行时的存储分配。

三、编译过程

1、编译过程的概述

词法分析-> 语法分析 -> 语义分析+中间代码生成 -> 中间代码优化 -> 目标代码生成 -> 目标代码

2、词法分析

http://www.lryc.cn/news/441791.html

相关文章:

  • 【Javascript修炼篇】JS中的函数式编程
  • spring cxf 常用注解
  • python | x-y 网格切片
  • 【C#】vs2022 .net8
  • 【华为杯】第二十一届中国研究生数学建模竞赛
  • 首次开机android.intent.action.BOOT_COMPLETED开机广播发送慢的问题
  • 通信工程学习:什么是OLT光线路终端
  • Unity的Button组件进行扩展
  • 前端vue-插值表达式和v-html的区别
  • 【开发心得】筑梦上海:项目风云录(4)
  • el-table使用el-switch选择器没效果
  • libserailport交叉编译适配说明
  • C语言中的一些小知识(二)
  • 使用 Go 语言实现简单聊天系统
  • 用友U8二次开发工具KK-FULL-*****-EFWeb使用方法
  • 【经验帖】脏读和不可重复读的概念及影响
  • MTK zephyr平台:USB升级、枚举流程
  • golang操作mysql利器-gorm
  • 09 Shell Scriptfor循环结构语句
  • 【Java】并发集合
  • 活动邀请|景联文科技与您相约华为全联接大会2024
  • 周边游|基于springBoot的周边游平台设计与实现(附项目源码+论文+数据库)
  • 【编程基础知识】mysql是怎样执行一条sql语句的,涉及到哪些环节步骤是,mysql的整体体系结构是啥样的,有哪些组件
  • 如何上传tauri项目到csdn gitcode
  • 【速成Redis】02 Redis 五大基本数据类型常用命令
  • UnLua扩展C++函数和蓝图自定义事件
  • 干耳屎硬掏不出来怎么办?质量最好的可视挖耳勺推荐
  • 谷歌 Chrome 最新版升级:更强的安全检查功能守护你的上网安全
  • 深度学习自编码器 - 收缩自编码器(CAE)篇
  • Dubbo与SpringCloud的区别和优缺点