首页 > 其他分享 >编译原理第一章

编译原理第一章

时间:2025-01-16 20:59:42浏览次数:3  
标签:代码生成 翻译程序 解释程序 第一章 编译 原理 低级语言 编译程序

1. 翻译、编译、解释的概念

翻译程序:将一种语言程序(源)转换成另一种语言程序(目标),两者在逻辑上是等价的。

编译程序:如果源语言是高级语言,如Pascal,C,Ada,Java语言等,目标语言是低级语言,如汇编语言或机器语言之类的低级语言,则称为编译程序。 先编译,后执行

解释程序:边转换边执行,不生成目标代码。

编译程序、解释程序都是一种翻译程序(是系统软件,不是应用软件),主要区别在于翻译程序在解释程序的执行过程中不产生目标程序)

2.编译过程

编译过程一般可分为五个阶段:

一、词法分析:识别出源程序中的一个个单词符号
二、语法分析:把单词符号串组合成各类语法单位
三、(可有可无)语义分析与中间代码生成:分析语法范畴的含义,并进行初步翻译(产生中间代码)
四、(可有可无)优化:产生更高效的代码
含优化部分的编译程序执行效率低(因为需要做更多的事才能使目标代码执行效率高)
五、目标代码生成:将中间代码变换成特定机器上的低级语言代码
(目标代码生成是编译程序必须的一个部分。)

3.编译程序的结构

除了五个功能模块,一个完整的编译程序还包括:表格管理和出错处理。

在编译过程中,主要的错误处理是语法错误的检查与恢复。

标签:代码生成,翻译程序,解释程序,第一章,编译,原理,低级语言,编译程序
From: https://blog.csdn.net/m0_74222809/article/details/145191646

相关文章

  • 【内网穿透】概念、原理与实现方法
    一、内网穿透简介内网穿透是一种网络技术,它允许外部网络(如互联网)上的设备访问位于内部网络(例如公司或家庭局域网LAN)中没有直接公网IP地址的设备。这对于远程办公、云服务接入以及物联网设备管理等场景至关重要。二、工作原理内网穿透主要依赖于NAT(网络地址转换)穿越技术。通常情......
  • Pytorch框架与经典卷积神经网络学习Day4|VGG原理与实战
    目录跟学视频1.原理1.1VGG网络诞生背景 1.2VGG网络结构 1.3VGG总结2.实战2.1model.py2.2model_train.py2.3model_test.py跟学视频炮哥带你学_Pytorch框架与经典卷积神经网络与实战1.原理VGG(VisualGeometryGroup)是一个深度卷积神经网络架构,广泛应用于计算机......
  • 使用 Golang 编译 Linux 可运行文件
    Golang(或Go)是一种开源编程语言,因其简单、高效、并发编程支持而备受欢迎。本文将详细介绍如何使用Golang编译生成可以在Linux上运行的可执行文件。一、安装Golang1.1下载Golang从Golang官方网站下载适合你操作系统的安装包:Golang下载页面1.2安装Golang在Ubuntu......
  • MyBatis缓存原理及插件实现
    目录MyBatis缓存原理缓存的工作机制一级缓存:二级缓存:MyBatis插件实现MyBatis缓存原理缓存的工作机制如果会话查询了一条数据,此数据会存入一级缓存;若会话被关闭或提交,则,其数据转存入二级缓存;新会话若再次查询之前查询过的数据,就从二级缓存中获取;不同的Mapper,查询出......
  • 编译器设计史 | 工作原理 | C 编译器简介
    注:机翻,未校。HistoryofCompilerDesign编译器设计的历史PriteshPawarOct20,2021InthisblogI’llbetryingtoshadowthehistoryofcompilersindetailalongwiththebasicintroductiontocompilersandit’soptimization.在这篇博客中,我将尝试详......
  • RSA的原理和简单实践
    RSA加密是一种非对称加密,原理是:使⽤算法可以⽣成两把钥匙A和B使⽤A加密的信息,使⽤B可以解开使⽤B加密的信息,使⽤A可以解开⽇常使⽤中,我们把⼀把作为公钥公开发布。⼀把作为私钥,⾃⼰保留。这样,任何⼈都可以使⽤我们的公钥加密信息发给我们,我们则可以使⽤⾃⼰的私......
  • 自然语言处理(GloVe):原理、特点、应用、技术、相关学术分享
    目录GloVe的基本原理GloVe的特点GloVe的应用GloVe与其他词嵌入技术相关学术会议分享GloVe(GlobalVectorsforWordRepresentation)是一种用于生成词嵌入(wordembeddings)的算法,旨在将单词表示为稠密向量,从而捕捉单词之间的语义关系。GloVe是由斯坦福大学的研究人员提出......
  • 解决cmake编译时*ui,*h存放在不同文件夹下时*.ui无法生成ui_*.h问题
    使用的Qt版本为6.8.1,cmake版本为3.31.0-rc1。遇到问题原因原本的目录结构比较乱,代码文件一多就很不好找,在对文件进行分类管理的过程中发现*ui文件无法生成ui_*.h有问题部分的cmake本来想使用qt_wrap_ui和set(CMAKE_AUTOUICON)让他自动生成ui_*.h的,但是失败了cmake_minimum_......
  • IAR编译工程报错:CreateProcess failed:The system cannot find the file specified
    IAR安装完成后,编译STM32的工程时报如下错误信息:CreateProcessfailed:Thesystemcannotfindthefilespecified全网检索各种答案都有,尝试重新安装、版本升级等都没能解决。因为之前有过安装8.32版本,卸载后又进行安装的9.2版本,抱着试探的心理,打开注册表将和IAR相关......
  • 市面上唯一一本全面解析Transformer的书《Transformer、BERT、GPT 大语言模型原理深度
    Transformer,BERT,andGPT:IncludingChatGPTandPromptEngineering,出版于2023年11月,作者是奥斯瓦尔德·坎佩萨托(OswaldCampesato)奥斯瓦尔德·坎佩萨托(OswaldCampesato):专门研究深度学习、Java、Android和TensorFlow。他是25本书的作者/合著者,其中包括TensorF......