【编译原理】绪论

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

编译是对高级语言的翻译

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

编译程序是一种翻译程序

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

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

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

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

3.编译器构造

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

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

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

4.词法分析概述

5.语法分析

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

6 语义分析

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

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

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

语法结构树/语法树
三地址指令的表示:

四元式

三元式

间接三元式

9 目标代码生成

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

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

10 代码优化

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

相关推荐
ReedFoley8 小时前
【笔记】动手学Ollama 第七章 应用案例1 搭建本地AI Copilot编程助手
人工智能·笔记·copilot
长安即是故里9 小时前
Maxwell学习笔记
笔记·学习
咸甜适中11 小时前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条
笔记·学习·rust·egui
努力敲代码的小盆友12 小时前
[自用笔记]上传本地项目至github
笔记·github
It_张13 小时前
Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第五章学习笔记及总结)
笔记·学习·chatgpt
The_Second_Coming13 小时前
Linux 学习笔记 - 集群管理篇
linux·笔记·学习
使二颗心免于哀伤18 小时前
《设计模式之禅》笔记摘录 - 17.模板方法模式
笔记·设计模式·模板方法模式
咸甜适中19 小时前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十五)网格布局
笔记·学习·rust·egui
Duo1J21 小时前
【OpenGL】LearnOpenGL学习笔记15 - 面剔除
笔记·学习·图形渲染
暗流者1 天前
AAA 服务器与 RADIUS 协议笔记
运维·服务器·笔记