niusouti.com
更多“对中间代码的优化依赖于具体的计算机。”相关问题
  • 第1题:

    _____和代码优化部分不是每个编译程序都必需的。

    A、语法分析

    B、中间代码生成

    C、词法分析

    D、目标代码生成


    参考答案:B

  • 第2题:

    在编译程序时,采用的对中间代码的优化方法中,(30)是基于循环结构进行的优化处理。

    ①合并已知量

    ②删除归纳变量

    ③删除多余运算

    ④强度削弱

    ⑤复写传播

    ⑥代码外提

    A.①③⑤

    B.②④⑥

    C.①②③

    D.④⑤⑥


    正确答案:B
    解析:针对循环能采用的优化技术有代码外提、强度削弱和删除归纳变量。代码外提是把循环体中不随循环的执行改变计算结果的表达式外提到循环的前置块中。强度削弱是用较弱的运算代替较强的运算,例如用加法运算代替乘法运算。为了实施这种优化技术,要先找出归纳变量,什么是归纳变量呢?若在循环体中变量i只有唯一的形式i:=i+c,其中c是常量,则称i是基本归纳变量。若在循环体中有另一个变量j,其值是基本归纳变量i的线性函数,则称j是普通归纳变量。删除归纳变量是在强度削弱后进行的,用和基本归纳变量同族的归纳变量代替之,使基本归纳变量成为无用赋值,故可删去。

  • 第3题:

    将高级语言源程序翻译成机器语言程序的过程中,常引入中间代码。以下关于中间 代码的叙述中,不正确的是 ( 22)。

    A.中间代码不依赖于具体的机器

    B.使用中间代码可提高编译程序的可移植性

    C.中间代码可以用树或图表示

    D.中间代码可以用栈和队列表示


    正确答案:D
    本题考查程序语言基础知识。从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是繁琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。常用的中间代码有后缀式、三元式、四元式和树(图)等形式。

  • 第4题:

    将高级语言源程序翻译成机器语言程序的过程中常引入中间代码。以下关于中间代码的叙述中,正确的是( )

    A.中间代码不依赖于具体的机器
    B.不同的高级程序语言不能翻译为同一种中间代码
    C.汇编语言是一种中间代码
    D.中间代码的优化必须考虑运行程序的具体机器

    答案:A
    解析:
    本题考查程序语言基础知识。
    中间代码生成阶段的工作是根据语义分析的输出生成中间代码。"中间代码"是一种简单且含义明确的记号系统,可以有若干种形式,它们的共同特征是与具体的机器无关。中间代码的设计原则主要有两点:一是容易生成,二是容易被翻译成目标代码。

  • 第5题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,(请作答此空)并不是每个编译器都必需的。与编译器相比,解释器______。

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    本题考查程序语言基础知识。解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。分阶段编译器的工作过程如下图所示。其中,中间代码生成和代码优化不是必须的。

  • 第6题:

    将高级语言源程序翻译为机器语言程序的过程中常引人中间代码。以下关于中间代码的叙述中,错误的是()。

    A.不同的高级程序语言可以产生同一种中间代码
    B.中间代码与机器语言代码在指令结构上必须一致
    C.使用中间代码有利于提高编译程序的可移植性
    D.使用中间代码有利于进行与机器无关的优化处理

    答案:B
    解析:
    “中间代码”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植性。

  • 第7题:

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

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的

  • 第8题:

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

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的

  • 第9题:

    以下中间代码的表示形式中,()更便于优化。

    • A、三元式
    • B、四元式
    • C、抽象语法树
    • D、后缀式

    正确答案:B

  • 第10题:

    编译程序的输出结果可以是()。

    • A、目标代码
    • B、汇编语言代码
    • C、中间代码
    • D、优化后的中间代码
    • E、可重定位代码

    正确答案:A,B,C,D,E

  • 第11题:

    判断题
    对中间代码的优化依赖于具体的计算机。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第12题:

    判断题
    在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第13题:

    编译程序对中间代码的优化,根据优化所涉及的程序范围,可分为局部优化、循环优化和全局优化。所谓局部优化是指在(30)范围内做的优化。

    A.表达式

    B.语句

    C.函数

    D.基本块


    正确答案:D
    解析:局部优化是在基本块范围内进行的优化。所谓基本块是指程序中一个顺序执行的语句(四元式)序列,其中只有一个入口和一个出口。入口就是其中的第1条语句,出口是最后一条语句。对一个给定的程序,把它划分成一系列的基本块,以基本块为结点,构建程序流图。对中间代码优化,首先是在各基本块范围内,分别进行局部优化,然后,进行基于循环的优化和全局优化。一个基本块中的四元式序列,可以先把它表示成一个DAG(有向无环)图,然后,根据DAG图的依赖关系,把这个DAG图重新写成一个基本块的四元式序列。在重建基本块的四元式序列过程中,进行已知量的合并、删除多余运算和删除无用赋值的优化。

  • 第14题:

    在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。 ()

    此题为判断题(对,错)。


    正确答案:错误

  • 第15题:

    ●编译器对高级语言源程序的处理过程可以划分为同法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和 ()并不是每种编译器部必需的。()A.词法分析 B.语法分析 C.中间代码生成 D.语义分析


    正确答案:C
    中间代码生成:在语法和语义分析的基础上,将源程序转变为一种内部表示形式(中间语言、中间代码),它通常易于生成、易于翻译成目标代码。不过,并不是所有的语言都必须经过这一步。
    代码优化:对前阶段生成的中间代码进行变换或改造,以使生成的目标代码更节省时间和空间。不过,这个工作也并非是每种编译器都需要的。

  • 第16题:

    将高级语言源程序通过编译或解释方式进行翻译时,可以先生成与源程序等价的某种中间代码。以下关于中间代码的叙述中,正确的是( )。

    A.中间代码常采用符号表来表示
    B.后缀式和三地址码是常用的中间代码
    C.对中间代码进行优化要依据运行程序的机器特性
    D.中间代码不能跨平台

    答案:B
    解析:
    常见的中间代码有后缀式、三地址码、树,符号表是在编译预处理时,中间代码不依赖于硬件平台,可移植性强,可跨平台。

  • 第17题:

    将高级语言源程序翻译成机器语言程序的过程中,常引入中间代码。以下关于中间代码的叙述中,不正确的是______。

    A.中间代码不依赖于具体的机器
    B.使用中间代码可提高编译程序的可移植性
    C.中间代码可以用树或图表示
    D.中间代码可以用栈和队列表示

    答案:D
    解析:
    本题考查程序语言基础知识。从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是烦琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。常用的中间代码有后缀式、三元式、四元式和树(图)等形式。

  • 第18题:

    编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,( )并不是每种编译器都必需的。

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    本题考查程序语言翻译基础知识。编译器对高级语言源程序的处理过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,以及符号表管理模块和出错处理模块。在编译器的分析综合模式中,前端将源程序翻译成一种中间表示,后端根据这个中间表示生成目标代码。目标语言的细节尽可能限制在后端。尽管可以将源程序直接翻译成目标语言代码,但使用与机器无关的中间表示形式具有以下优点:①重置目标比较容易。不同机器上的编译器可以在已有前端的基础上附加一个适合这个机器的后端来生成。②可以在中间表示上应用与机器无关的代码优化器。

  • 第19题:

    语法制导翻译是一种( )方法。

    A.动态语义分析
    B.中间代码优化
    C.静态语义分析
    D.目标代码优化

    答案:C
    解析:
    程序设计语言的语义分为静态语义和动态语义,其中静态语义分析方法是语法制导翻译,其基本思想是将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予文法的产生式。

  • 第20题:

    在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。


    正确答案:错误

  • 第21题:

    通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(),中间代码生成、代码优化与目标代码的生成则是对源程序的()。


    正确答案:分析;综合

  • 第22题:

    多选题
    编译程序的输出结果可以是()。
    A

    目标代码

    B

    汇编语言代码

    C

    中间代码

    D

    优化后的中间代码

    E

    可重定位代码


    正确答案: D,E
    解析: 暂无解析

  • 第23题:

    填空题
    通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(),中间代码生成、代码优化与目标代码的生成则是对源程序的()。

    正确答案: 分析,综合
    解析: 暂无解析