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

【编译原理】绪论

1.计算机程序语言以及编译 

d3a2562a4cb64e96961b2ba894be0e12.png

672b6decd12347a9b35d3c6e896afb97.png

        编译是对高级语言的翻译

        源程序是句子的集合可以较好的反应句子的结构

        编译程序是一种翻译程序

2.编号器在语言处理系统中的位置 

        可重定位:在内存中存放的起始位置不是固定的

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

        链接器:将多个可重定位的机器代码文件(包括库文件)连接在一起;解决外部内存地址问题

ff40e95786624ed085affe42a85b24dc.png

 3.编译器构造

        分析部分/前端:与源语言相关(从词法分析器到中间代码生成器)

        综合部分/后端:与目标语言相关(从目标代码生成器到相关代码优化)

        语法分析器接收以单词为单位的输入,语法分析器的任务是分析单词串是如何构成语句和声名的 ,语法分析所依据的是语法规则

10acf3ca61294a8c87e3e7291c8cd213.png

4.词法分析概述

f3d084a853fa4e64b28b7651c2b2790c.png

2cbd0e5579424a1cb7b1895a4d6b0e97.png

5.语法分析

        语法分析器从词法分析器输出发token序列中识别出各类短语,并构造语法分析树

        

d76d0f9521d14dc89d1c77db6b41fe74.jpeg

6 语义分析

a78ae33a53184d7286f3621869066e1e.jpeg

a36c9ea8665c4b369ce9f8e98b426643.png

7.中间代码生成以及编译器后端概述

常用中间代码的中间表示形式:

        三地址码:本模块主要讨论这个

        语法结构树/语法树  

三地址指令的表示:

        四元式

        三元式

        间接三元式

b3161e7be9284c6185eafcc6ef863a0e.jpeg

cd6d205dce6349da8fdfac510a71a1fd.jpeg

3ccf48b88a2f4116ab376db17d6d58aa.png

9 目标代码生成

        目标代码生成以源程序的中间表示形式作为输入,并把它映射到目标语言

        目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器

10 代码优化

        为改进代码所进行的等价程序交换,使其运行得更快一些,占用空间更少一些,或者二者兼顾

 

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

相关文章:

  • 优化Docker部署:解决Java应用ExcelGenerateException并提速镜像构建
  • 你了解RabbitMQ、RocketMQ和Kafka吗?
  • python实现可视化大屏(django+pyechars)
  • Leetcode 力扣 125. 验证回文串 (抖音号:708231408)
  • Java程序递归及mybatis递归查询
  • 苹果电脑安装双系统步骤 教你苹果电脑如何装双系统
  • Axios-入门
  • Python22 Pandas库
  • 不同表格式下的小文件治理方式(开源RC file/ORC/Text非事务表、事务表、Holodesk表格式..)
  • 0.7 模拟电视标准 PAL 简介
  • vue项目中封装element分页组件
  • linux下docker安装与镜像容器管理
  • 【Unity】RPG2D龙城纷争(六)关卡编辑器之角色编辑
  • 【鸿蒙】鸿蒙的Stage和 FA 有什么区别
  • JAVA小知识29:IO流(上)
  • 大学生毕业季,寄物流快递避雷指南
  • 如何提高项目风险的处理效率?5个重点
  • ZNB40 矢量网络分析仪
  • ingress代理前后端服务跨域
  • Python 使用 Thick 方式连接 Oracle Database BaseDB 23ai
  • Java操作Redis(通过Jedis)
  • JVM专题二:Java如何进行编译的
  • 道路元素位置和方向的坐标系统: 点 线 面 连接点
  • 二、Docker常用命令
  • 通过docker启动Jenkins容器报错
  • webui automatic1111上可以跑stable diffusion 3的方法
  • 基于顺序表基础实现通讯录项目
  • 加班的员工,循环的电池
  • windows安装Nacos并使用
  • 准备篇(三)网页相关知识