left 您的位置:洪恩在线 -> 继续教育 -> 自学考试 -> 试题集锦 -> 在线测试/td> right

   

编译原理模拟试题


  
   四、简述题答案:
  
   1、考虑下面程序
     …………
     Var a:integer;
     Procedure S(X);
      Var X:integer;
      Begin
       a:=a+1;
       X:=a+X
      End;
     Begin
       a:=5;
       S(a);
       Print(a)
     End.
     试问:若参数传递方式分别采取传名和传值时,程序执行后输出a的值是什么?
  
   答:传名:a=12   (2分)
     传值:a=6    (2分)
  
   3、写出表达式(a+b*c)/(a+b)-d的逆波兰表示及三元式序列。
     
   逆波兰表示:
       abc*+ab+/d-    (2分)
       三元式序列:
       ① (*,b,c)
       ② (+,a,①)
       ③ (+,a,b)
       ④ (/,②,③)
       ⑤ (-,④,d)    (2分)
  
   4、已知文法G(S)
     S→a|∧|(T)
     T→T,S|S
     写出句子((a,a),a)的规范归约过程及每一步的句柄。
  
       句型     归约规则     句柄
       ((a,a),a)  S→a       a
       ((S,a),a)  T→S       S
       ((T,a),a)  S→a       a
       ((T,S),a)  T→T,S      T,S
       ((S),a)    T→S       S
       ((T),a)    S→S(T)      (T)
       (S,a)     T→S       S
       (T,a)     S→a       a
       (T,S)     T→T,S      T,S
       (T)       S→(T)      (T)
      S                  (4分)
  
   5、何谓优化?按所涉及的程序范围可分为哪几级优化?
  
   答:优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。        (2分)
     三种级别:局部优化、循环优化、全局优化。  (2分)
  
   6、目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?
  
   答:目标代码通常采用三种形式:机器语言,汇编语言,待装配机器语言模块。(2分)
     应着重考虑的问题:
     (1)如何使生成的目标代码较短;
     (2)如何充分利用寄存器,以减少访问内存次数;
     (3)如何充分利用指仅系统的的特点。      (2分)
  

 
【关闭窗口】