软件评测师基础知识专项刷题:编译、解释、汇编(1)

前言

软考软件评测师备考之路,基础刷题必不可少。本文围绕**【** 编译、解释、汇编 **】**模块整理经典习题 + 核心考点梳理,系列内容长期连载更新,慢慢积累、逐个突破,轻松夯实应试功底。

考点

1、编译与解释的区别

编译方式下机器运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高。

解释方式下解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,边解释边执行,执行效率较低。

即:解释方式,翻译程序部生成独立的目标程序,而编译方式则生成独立保持的目标程序。

汇编语言是机器语言的符号化表示,一一对应,不同的CPU有不同的汇编语言和机器语言。

2、编译过程

(1)错误管理

程序错误可分为两类:语法错误和语义错误,语法描述语言的结构(形式或样子),语义表达语言的含义。语法错误会在编译阶段检查出来,程序中有语法错误时不能通过编译。语义错误分为静态的语义错误和动态语义错误,静态的语义错误是指在编译阶段发现的错误,动态的语义错误在程序运行时出现。

动态错误也称动态语义错误,它们发生在程序运行时,例如死循环、变量取零时作除数、引用数组元素下标越界等错误。

静态错误是指编译时所发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等有关语言结构上的错误称为语法错误。而语义分析时发现的运算符与运算对象类型不合法等错误属于静态语义错误。

刷题区

题1

|-------------------------------------------------------------------------------------------------------------------------------------------------|
| 以下叙述中,正确的是() A.编译正确的程序不包含语义错误 B.编译正确的程序不包含语法错误 C.除数为0的情况可以在语义分析阶段检查出来 D.除数为0的情况可以在语法分析阶段检查出来 答案B 解析:语义错误分为动态错误和静态错误,只有语法和语义都正确的源程序才能被翻译成正确的目标代码 |

题2

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,()并不是每个编译器都必需的。 A.词法分析和语法分析 B.语义分析和中间代码生成 C.中间代码生成和代码优化 D.代码优化和目标代码生成 答案C 解析:其中,中间代码生成和代码优化不是必须的。 |

题3

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 已知某高级语言源程序A经编译后得到机器C上的目标程序B,则()。 A.B进行反编译,不能还原出源程序A B.对B进行反汇编,不能得到与源程序A等价的汇编程序代码 C.对B进行反编译,得到的是源程序A的变量声明和算法流程 D.对A和B进行交叉编译,可以产生在机器C上运行的动态链接库 答案A 解析:编译是将高级语言源程序翻译成机器语言程序(汇编形式或机器代码形式);反编译是编译的逆过程,只能转换成功能等价的汇编程序。 |

题4

|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 对高级语言源程序进行编译时,可发现源程序中的()错误。 A.堆栈溢出 B.变量未定义 C.指针异常 D.数组元素下标越界 答案B 解析:堆栈溢出、指针异常和数组元素下标越界都是程序运行中才能出现的问题,而遭循先声明后引用原则的程序语言必须先定义变量,然后才能使用,否则编译器会在语法分析阶段指出变量未定义错误。 |

题5

|-------------------------------------------------------------------------------------------------|
| 将高级语言程序翻译为机器语言程序的过程中,常引入中间代码,其好处是() A.有利于进行反编译处理 B.有利于进行与机器无关的优化处理 C.尽早发现语法错误 D.可以简化语法和语义分析 答案B |

题6

|------------------------------------------------------------------------------------|
| 若程序在运行时陷入死循环,则该情况属于()。 A.语法错误 B.运行时异常 C.动态的语义错误 D.静态的语义错误 答案B 解析:陷入死循环只有在运行的时候才能发现 |

题7

|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 若C程序的表达式中引用了未赋初值的变量,则() A.编译时一定会报告错误信息,该程序不能运行 B.可以通过编译并运行,但运行时一定会报告异常 C.可以通过编译,但链接时一定会报告错误信息而不能运行 D.可以通过编译并运行,但运行结果不一定是期望的结果 答案D 解析:由于变量的值是随机的,因此运行结果也为随机 |

题8

|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| ()属于系统软件,它直接执行高级语言源程序或与源程序等价的某种中间代码。 A.编译程序 B.预处理程序 C.汇编程序 D.解释程序 答案D 解析:解释程序直接执行高级语言源程序或先翻译成某种中间代码形式再执行,不形成与源程序功能等价的目标程序。有些语言在编译之前还需要进行预处理,如C/C++语言等。 |

总结

以上就是本次软件评测师「编译、解释、汇编」基础知识的刷题练习与考点梳理啦~

如果本篇软件评测师「编译、解释、汇编」基础知识刷题内容对你备考有所帮助,欢迎点赞👍、收藏⭐、关注一波!

相关推荐
@insist1233 小时前
网络工程师-WLAN 无线局域网全解析
大数据·网络·网络工程师·软考·软件水平考试
雪碧聊技术9 小时前
【软考中级—软件设计师】考试一文详解
软考·备考·软件设计师
@insist1239 小时前
网络工程师-广域网与接入网技术(一):核心协议与流量控制
开发语言·网络·网络工程师·软考·软件水平考试
@insist12321 小时前
网络工程师-生成树协议(STP/RSTP/MSTP)核心原理与应用
服务器·开发语言·网络工程师·软考·软件水平考试
@insist1231 天前
网络工程师-VLAN 技术原理与配置指南(软考局域网核心考点)
网络·网络工程师·软考·软件水平考试
Kethy__1 天前
计算机中级-数据库系统工程师-数据结构-图
数据结构·算法·软考··数据库系统工程师·计算机中级
猹叉叉(学习版)1 天前
【系统分析师_知识点整理】 14.系统运行与维护
运维·笔记·软考·系统分析师
小向是个Der1 天前
嵌入式进阶——嵌入式MCU编译工具链总结
单片机·编译·嵌入式软件·cline+glm5.0
我科绝伦(Huanhuan Zhou)1 天前
项目管理计算题通关手册(0基础大白话版)
运维·软考