当前位置: 首页 > 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、词法分析

相关文章:

一、编译原理(引论)

目录 【一】、引论 一、编译器 1、编译器 2、编译器与解释器 3、编译器结构 【一】、引论 一、编译器 1、编译器 (1)编译器:将人类易懂的 高级语言 翻译成 硬件可执行的目标机器语言 (2) 高级语言 ⚫ 直接面…...

【Javascript修炼篇】JS中的函数式编程

介绍: 函数式编程(FP)是一种编程范式,这意味着一种基于一些原则来思考软件构建的方法,比如 纯函数、不可变性、一等与高阶函数、函数组合、闭包、声明式编程、递归、引用透明性、柯里化 和 部分应用。 当这些原则有效…...

spring cxf 常用注解

在Spring框架中,特别是当与Apache CXF(一个流行的SOAP和RESTful Web服务框架)结合使用时,我们会遇到一系列的注解。以下是一些在Spring和CXF中常用的注解: Spring相关注解: Component:用于定义一…...

python | x-y 网格切片

写在前面 通常, 我们处理的毕竟完善的nc产品,一般呈现未timexlatxlon的维度,且lon和lat都是规则的网格,我们可以方便的使用xarray.sel()选择合适的区域进行切片。但是,部分nc产品比如卫星轨道或者模式输出的数据&…...

【C#】vs2022 .net8

Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 更新就会出现...

【华为杯】第二十一届中国研究生数学建模竞赛

“华为杯”第二十一届中国研究生数学建模竞赛即将开始,梦想科研社给大家整理一些比赛信息,在正式开赛后,我们也会持续分享一些课题的分析以及代码,有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…...

首次开机android.intent.action.BOOT_COMPLETED开机广播发送慢的问题

1. 背景 做过android开发的同学相信一定做个这种逻辑:app接收BOOT_COMPLETED开机广播,自启动,或者收到广播做一些事情。目前在我们的项目上遇到首次开机,BOOT_COMPLETED开机广播发送慢的问题。接下来分享记录下如何定位这类问题。 2. 分析过…...

通信工程学习:什么是OLT光线路终端

OLT:光线路终端 OLT(Optical Line Terminal,光线路终端)是光纤通信系统中的核心局端设备,特别是在无源光网络(Passive Optical Network, PON)架构中扮演着至关重要的角色。以下是关于OLT光线路终…...

Unity的Button组件进行扩展

废话不多说,在Untiy中,如果想要对Button等组件进行扩展的话,那么不仅仅只需要将新增的属性设置为public或者增加SerializeField字段就行了的,同时需要对Inspector的GUI面板进行修改,以下直接展示代码: usi…...

前端vue-插值表达式和v-html的区别

创建vue实例的时候,可以有两种形式。 1.let appnew Vue({}) 2 const appnew Vue({}) 3 el是挂载点,是上面div的id值 4 data中的值可以展示在上面div中 5 v-html标签里面如果有内容,则我们的新内容会把标签里面的内容覆盖掉...

【开发心得】筑梦上海:项目风云录(4)

不知不觉已经写到了第4篇,天下大事,必作于细。 其实项目管理也是如此,成功都在细节之处。自从博士离开以后,项目逐步开始进入了正常轨道。来来回回的30多人,也不能一一列举的记流水账。 目录 会海和MSN 小娇往事 …...

el-table使用el-switch选择器没效果

出现问题的代码: 0表示启用&#xff0c;1表示禁用&#xff0c;发现页面根本没有效果&#xff0c;百思不得其解&#xff0c;查阅资料&#xff0c;恍然大悟。 <el-table :data"userList" stripe border style"width: 100%" height"500"><…...

libserailport交叉编译适配说明

1&#xff1a;libserialport简介 github路径 自己的gitee路径 libserialport 是一个跨平台的串口通信库&#xff0c;由 sigrok 项目开发。它简洁、易用&#xff0c;并且支持多种操作系统。 libserialport 支持阻塞和非阻塞模式&#xff0c;可以根据你的需求选择适当的模式。阻…...

C语言中的一些小知识(二)

一、"%"运算符两侧只能是整数 在C语言中&#xff0c;% 运算符称为模运算符或取余运算符&#xff0c;它用于计算两个整数相除后的余数。当使用 % 运算符时&#xff0c;操作数必须是整数类型&#xff08;包括 char、int、long 等&#xff09;。 语法 remainder div…...

使用 Go 语言实现简单聊天系统

在互联网时代&#xff0c;聊天系统是常见的应用场景之一。无论是即时通讯、在线客服还是多人游戏中的消息系统&#xff0c;聊天功能的实现都是必不可少的。本文将使用 Go 语言&#xff0c;结合 WebSocket 来构建一个简单的多人聊天室系统。 一、项目结构 首先&#xff0c;我们…...

用友U8二次开发工具KK-FULL-*****-EFWeb使用方法

1、安装: 下一步&#xff0c;下一步即可。弹出黑框不要关闭&#xff0c;让其自动执行并关闭。 2、服务配置&#xff1a; 输入服务器IP地址&#xff0c;选择U8数据源&#xff0c;输入U8用户名及账号&#xff0c;U8登录日期勾选系统日期。测试参数有效性&#xff0c;提示测试通过…...

【经验帖】脏读和不可重复读的概念及影响

脏读和不可重复读是数据库事务并发执行时可能出现的两种数据一致性问题&#xff0c;它们对数据的一致性和完整性有着显著的影响。以下是脏读和不可重复读的具体影响&#xff1a; 脏读的影响 脏读发生在一个事务读取了另一个事务未提交的数据时。由于这些数据尚未被提交&#x…...

MTK zephyr平台:USB升级、枚举流程

一、USB升级流程 通过代码及log分析,当前平台升级过程在PL阶段进行 USB download相关代码 mtk/modules/hal/boot/preloader/platform/flashc/ mtk/modules/hal/boot/preloader/platform/board_name/flash/ mtk/modules/hal/boot/preloader/platform/board_name/src/drive…...

golang操作mysql利器-gorm

1、傻瓜示例 GORM通过将数据库表中的数据映射到面向对象的模型中&#xff0c;简化了数据库操作&#xff0c;使得开发者可以很方便的使用代码来操作数据库&#xff0c;而无需编写SQL语句。 目前有个mysql表&#xff1a;miniprogram_orders&#xff0c;其存储了所有用户对应的订…...

09 Shell Scriptfor循环结构语句

Shell Scriptfor循环结构语句 一、Shell FOR循环语句概述 ​ 属于shell的符合语句 ​ 可以看出帮助信息给出了两种语法 [rootlocalhost ~]# help for for: for NAME [in WORDS ... ] ; do COMMANDS; doneExecute commands for each member in a list.The for loop executes…...

OpenClaw浏览器自动化:Qwen3-14b_int4_awq驱动网页检索与数据抓取

OpenClaw浏览器自动化&#xff1a;Qwen3-14b_int4_awq驱动网页检索与数据抓取 1. 为什么需要浏览器自动化助手 作为一个经常需要收集行业动态的技术博主&#xff0c;我每天要花大量时间在不同网站间切换、搜索关键词、复制粘贴数据。这种重复劳动不仅效率低下&#xff0c;还容…...

51单片机入门难点解析与高效学习路径

1. 为什么51单片机入门难&#xff1f;问题出在哪里&#xff1f;很多初学者在接触51单片机时&#xff0c;都会遇到一个奇怪的现象&#xff1a;明明大家都说51单片机简单&#xff0c;但自己学起来却特别吃力。作为一个带过上百名单片机新手的工程师&#xff0c;我发现这个问题通常…...

数据治理与数据质量:从策略到实践

数据治理与数据质量&#xff1a;从策略到实践 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农&#xff0c;我深知数据治理和数据质量在企业数据管理中的重要性。随着数据量的爆炸式增长和数据类型的多样化&#xff0c;数据治理和数据质量已经成为企业数据管理的核心挑战。今…...

W5500 TCP客户端实战 | 02 - 从寄存器配置到数据收发的完整流程解析

1. W5500网络寄存器配置详解 第一次接触W5500芯片时&#xff0c;我被它密密麻麻的寄存器地址搞得头晕眼花。后来发现只要抓住几个核心寄存器&#xff0c;配置起来就像填快递单一样简单。先说说最关键的四个本地网络寄存器&#xff0c;它们相当于设备的"身份证"&#…...

PINN 融合机器学习重构科学计算范式,物理先验赋能神经网络高效求解偏微分方程

PINN 即物理信息神经网络&#xff0c;将物理定律&#xff08;如偏微分方程、边界条件&#xff09;以约束损失形式嵌入机器学习框架&#xff0c;实现数据驱动与物理先验的融合。它依托神经网络的拟合能力&#xff0c;在训练中同时最小化观测数据误差与物理方程残差&#xff0c;无…...

别再只盯着报点率了:聊聊电容触摸屏算法里那些不为人知的‘软实力’

电容触摸屏算法的隐秘战场&#xff1a;超越报点率的技术博弈 在智能家居面板的清晨唤醒中&#xff0c;工业HMI产线的精准操控里&#xff0c;或是车载中控的流畅滑动间&#xff0c;电容触摸屏已成为人机交互的核心界面。当大多数技术选型讨论聚焦于报点率、触控精度这些硬指标时…...

基于粒子群算法的含分布式电源配电网动态无功优化程序——IEEE33节点配电网应用与性能分析

电力系统动态无功优化含分布式电源MATLAB程序IEEE33配电网 1&#xff09;该程序为基于粒子群算法的含分布式电源配电网动态无功优化程序&#xff0c;期刊论文源程序&#xff0c;配有该论文。&#xff08;2&#xff09;该程序为动态无功优化&#xff0c;并且考虑了分布式电源的接…...

MATLAB代码:基于源-荷双重不确定性的虚拟电厂/微网日前随机优化调度模型

MATLAB代码&#xff1a;计及源-荷双重不确定性的虚拟电厂/微网日前随机优化调度 关键词&#xff1a;虚拟电厂/微网 随机优化 随机调度 源-荷双重不确定性 虚拟电厂调度 参考文档&#xff1a;《Virtual power plant mid-term dispatch optimization》参考其燃气轮机、以及储…...

【带AI】基于SpringBoot+Vue美食推荐系统设计与实现+文档+指导搭建视频

特色采用前后端分离架构。系统通过分析用户行为数据&#xff08;浏览历史、收藏、评价&#xff09;&#xff0c;运用混合推荐算法为用户智能推荐美食。支持美食打卡、社交评价、AI聊天助手等功能&#xff0c;集成智谱AI提供智能美食咨询服务。技术栈后端&#xff1a;Spring Boo…...

PHP反序列化漏洞实战:从NewStarCTF题目看私有属性的坑

PHP反序列化漏洞实战&#xff1a;私有属性处理中的隐藏陷阱 在CTF竞赛和实际渗透测试中&#xff0c;PHP反序列化漏洞一直是Web安全领域的重点研究对象。而其中关于类属性可见性&#xff08;特别是private修饰符&#xff09;的处理机制&#xff0c;往往成为解题的关键突破口。去…...