视频加载失败

课程

1113 字
约 4 分钟

学堂在线测试 —— 编译原理

编译原理exercises/xuetangx_2026·更新于 2026-09-15

学堂在线测试 —— 编译原理

优化 习题


一、 单项选择题(本题共 5 小题,每小题 1 分,共 5 分)

1. 以下不是优化所需要遵循的原则的是 ( D )。

  • A. 等价原则
  • B. 有效原则
  • C. 合算原则
  • D. 必要原则

【解析】 优化需要遵循的三个原则是:等价原则(优化后的代码与优化前的代码在功能上等价)、有效原则(优化后的代码确实能提高效率)、合算原则(优化带来的收益要大于优化本身的开销)。“必要原则”不在其中,故选 D。

2. 基本块内的优化为 ( B )

  • A. 代码外提,删除归纳变量
  • B. 删除多余运算,删除无用赋值
  • C. 强度削弱,代码外提
  • D. 循环展开,循环合并

【解析】 基本块内的优化属于局部优化,主要包括:删除多余运算(公共子表达式消除)、删除无用赋值、常量合并、常量传播等。A、C 中的代码外提、删除归纳变量、强度削弱属于循环优化;D 中的循环展开、循环合并也属于循环优化。故选 B。

3. 下面的变换方法中不是循环优化的是 ( D )

  • A. 强度削弱
  • B. 代码外提
  • C. 删除归纳变量
  • D. 删除无用代码

【解析】 循环优化的三种主要方法是:代码外提(将循环不变计算移到循环之前)、强度削弱(用较快的运算代替较慢的运算,如将乘法替换为加法)、删除归纳变量(删除循环中多余的归纳变量)。“删除无用代码”属于局部优化或全局优化,不属于循环优化。故选 D。

4. 代码优化中,“删除公共子表达式” 属于 ( A )

  • A. 局部优化
  • B. 循环优化
  • C. 全局优化
  • D. 目标代码优化

【解析】 “删除公共子表达式”(即公共子表达式消除)是在基本块内进行的优化,属于局部优化的范畴。通过识别基本块内重复计算的表达式,用已计算的结果替代,从而减少冗余计算。故选 A。

5. 程序运行时,存储局部变量的区域是 ( C )

  • A. 代码区
  • B. 静态数据区
  • C. 栈区
  • D. 堆区

【解析】 程序运行时的内存分为代码区、静态数据区、栈区和堆区。代码区存放程序的机器指令;静态数据区存放全局变量和静态变量;栈区存放函数调用时的局部变量、参数和返回地址等;堆区用于动态内存分配(如 mallocnew)。局部变量存储在栈区,故选 C。

Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录