软考14-上午题-编译、解释程序翻译阶段

一、编译、解释程序【回顾】

目的:高级程序设计语言(汇编语言、高级语言)—【翻译】—>机器语言

1-1、编译方式

将高级语言书写的源程序——>目标程序(汇编语言、机器语言) 

包含的工作阶段:词法分析、语法分析、语义分析、中间代码生成(可省)、代码优化(可省)、目标代码生成。

 词法分析、语法分析、语义分析、目标代码生成

1-2、解释方式

包含的工作阶段:词法分析、语法分析、语义分析。

【注意】:

编译器、解释器都不可省略词法分析、语法分析、语义分析!!!且顺序不可交换!!!

1-3、真题

真题1:

真题2:

真题3:

 真题4:

二、符号表

2-1、符号表的作用

不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。

记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成

2-2、真题

真题1:

 真题2:

真题3:

真题4:

三、编译器的工作阶段

3-1、词法分析 (考的较少)

编译器的工作阶段,第一阶段

输入:源程序

输出:记号流

词法分析过程,依据的是语言的词法规则。把源程序看做一个字符串进行分析。

任务:对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。

示例:

词法分析阶段的主要作用是,分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。

3-2、语法分析

输入:记号流

输出:语法树(分析树)

作用:确定整个输入串是否构成一个语法上的正确的程序。

可以发现程序中的所有语法错误。

如:括号不匹配,结尾缺少分号...... 

词法分析、语法分析,本质上都是对源程序的结构进行分析。 

3-3、语义分析

输入: 语法树(分析树)

作用:进行类型分析和检查。可以发现静态语义错误。

静态语义错误:

运行之前就能发现的错误。

如:整数取余运算,只能对整型数据进行运算,若其运算对象中有浮点数,就认为是类型不匹配的错误。

不能发现动态语义错误,动态语义错误,运行时才能发现!!! 

所以,语义分析阶段,不能发现程序中的所有语义错误。

3-4、目标代码生成阶段(了解)

生成编译器工作的最后一个阶段。

任务:把中间代码变换成特定机器上的绝对指令代码。这个阶段的工作与具体的机器密切相关

寄存器的分配工作处于目标代码的生成阶段。

3-5、真题 

真题1:

真题2:

 

真题3:

真题4:

真题5: 

真题6:

真题7:

真题8:

真题9:

真题10:

词法分析:扫描字符,识别单词  

真题11:

真题12:

3-6、中间代码的生成

中间代码的共同特征:与具体的机器无关。

可以将不同的高级程序语言翻译成同一种中间代码。

中间代码可以跨平台

因为中间代码与具体的机器无关,所以,使用中间代码有利于进行与机器无关的优化处理和提高变异程序的可移植性

3-6-1、常见的中间代码:        

  • 后缀式
  • 三地址码
  • 三元式
  • 四元式
  • 树、图

3-6-2、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

四、动态的语义错误

语义分析只能检测出程序的静态语义错误,不能检测出动态的语义错误。

动态的语义错误要到程序运行时才能检测出来。

比如:

除数为0.

循环条件错误导致死循环。

 

4-1、真题

真题1:

真题2:

 

语义错误:

  • 静态语义错误(语义分析阶段检测出来)
  • 动态语义错误 

编译阶段:检测所有的语法错误。

真题3:

真题4:

真题5:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/342983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 20.04 aarch64 平台交叉编译 libffi 库

前言 由于打算交叉编译 python,但是依赖 libffi 库,也就是 libffi 库也需要交叉编译 环境: ubuntu 20.04 交叉编译工具链:这里使用 musl libc 的 gcc 交叉编译工具链,aarch64-linux-musleabi-gcc,gcc 版本…

字符串冲刺题(算法村第十二关黄金挑战)

最长公共前缀 14. 最长公共前缀 - 力扣(LeetCode) 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow"…

安泰ATA-2082高压放大器如何驱动超声探头进行无损检测

无损检测技术是一种在不破坏或影响被检测物体性能的前提下,通过物理或化学方法对其内部或表面的缺陷进行检测的技术。在无损检测领域,超声检测是一种广泛应用的方法,而ATA-2082高压放大器则是实现高效、精确超声检测的关键设备之一。本期内容…

钉钉互动卡片对接-普通互动卡片接入流程

这里写目录标题 一、创建内部应用二、搭建普通卡片模板三、调用互动卡片服务端接口接口报文一、发送卡片二、更新卡片三、获取token 一、创建内部应用 登录开发者后台,创建内部应用。 例如 百度-内部测试获取AppKey和AppSecret, 获取应用访问凭证获取企…

计组与原理:系统总线

大家好啊,这里来到计组第二部分内容:系统总线 跳转上一篇:计组原理:系统概论与基本组成 系统总线 1.总线的基本概念单总线结构框图面向 CPU 的双总线结构框图以存储器为中心的双总线结构框图 2.总线的分类片内总线系统总线通信总线…

API接口安全总结

接口分类 HTTP接口 RPC接口(客户端和服务器端的连接 例如游戏登陆)非web协议,PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务。当两个物理分离的子系统需要建立逻辑上的关联时,R…

Pandas--简介(1)

Pandas 简介 Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。Pandas 是数据科学和…

前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法

文章目录 一、vue实现导出excel1、前端实现1、安装xlsx依赖2、引入3、方法4、使用4.1、将一个二维数组转成sheet4.2、将一个对象数组转成sheet4.3、合并单元格4.4、一次导出多个sheet 5、支持的文件格式 2、后端实现 二、导出文件损坏1、前端请求导出接口,增加返回类…

OpenHarmony驱动消息机制管理

驱动消息机制管理 当用户态应用和内核态驱动需要交互时,可以使用HDF框架的消息机制来实现。 消息机制的功能主要有以下两种: 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 配置管理 HCS(HDF Configuration Source&…

相机与镜头

一、相机视场 相机的视场角,也就是相机能够看到物像角度的最大值,视场角与焦距的关系为像高f*tan(fov/2)。由于相机的感光面是矩形,所以相机能够看到的区域也是矩形。探究相机的视场角,便于分析物面上那些区域属于相机盲区&#x…

前端模板字符串的使用

目录 1.说明 2.示例 3.总结 1.说明 模板字符串是用反引号()分隔的字面量,允许多行字符串,带有嵌入表达式的字符串插值和一种带标签的模板的特殊结构。 是增强版的字符串,在进行字符串拼接时,可以拼接固…

2.0-学成在线内容管理

内容管理模块 1.需求 1.1 业务流程 内容管理的业务由教学机构人员和平台的运营人员共同完成。 教学机构人员的业务流程如下: 1、登录教学机构。 2、维护课程信息,添加一门课程需要编辑课程的基本信息、上传课程图片、课程营销信息、课程计划、上传课程…

C语言或C++通过IShellLinkA创建或解析lnk快捷方式(使用char字符数组)

本例程用到的COM接口有IShellLinkA和IPersistFile。 请注意因为函数参数的类型不为BSTR,所以这两个接口可直接传char *或wchar_t *字符串,不需要提前转化为BSTR类型。 C语言的写法: /* 这个程序只能在C编译器下编译成功, 请确保源文件的扩展…

操作系统的灵魂--MMU详解

虚拟内存是现代操作系统中最伟大的发明之一。它为每个进程提供了一个一致的、私有的地址空间,让每个进程产生了一种自己在独享主存的错觉。 为了讲清楚MMU是如何一步一步完成地址翻译,取出数据的,本篇文章在前4节中讲解了虚拟内存中一些重要…

【代码随想录】刷题笔记Day54

前言 差单调栈就结束代码随想录一刷啦,回家二刷打算改用python补充进博客,小涛加油!!! 647. 回文子串 - 力扣(LeetCode) 双指针法 中心点外扩,注意中心点可能有一个元素可能有两个…

Java-SPI机制

SPI基本概念 SPI(Service Provider Interface)是一种服务发现机制,为某个接口寻找服务实现的机制。这有点类似 IoC 的思想,将装配的控制权移交到了程序之外。SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服…

理解反向代理

反向代理是一个不可或缺的组件。 它在客户端和服务器之间充当中介,提高了安全性、负载平衡和应用性能。 一、反向代理简介 反向代理是一种服务器,它位于客户端和后端服务器之间。与常见的(正向)代理不同,反向代理代表…

爬取A站视频,涉及m3u8格式的处理

一、抓包分析 1.进入A站进行抓包分析 进入一个页面,右点击鼠标按钮,点击检查 接着点击network,点击Fetxh/XHR,然后刷新网页,得到下面的页面 发现其中有许多d595开头的文件,它们是ts文件,点击其中一个。在…

v38.Switch语句

1.Switch语句可以替代if-else语句 2.具体使用 Switch(expression) { case label:...... } ①将x与case后的label 进行比较; ②注意后面有冒号; ③从上往下开始检查case; ④如果…

Transform模型详解

Transformer模型详解 Encoder与Decoder输入单词Embedding位置 Embedding 自注意力机制Self-Attention 结构Self-Attention 的输出Multi-Head Attention Encoder 结构Add & NormFeed Forward组成 Encoder Decoder结构Decoder第一个 Multi-Head AttentionDecoder第二个 Multi…
最新文章