• 龙书6.2


    6.2 节的练习

    6.2.1

    将算数表达式 a+-(b+c) 翻译成

    1. 抽象语法树
    2. 四元式序列
    3. 三元式序列
    4. 间接三元式序列

    解答

    1. 抽象语法树

      6 2 1

    2. 四元式序列

      op arg1 arg2 result
      0 + b c t1
      1 minus t1 t2
      2 + a t2 t3
    3. 三元式序列

      op arg1 arg2
      0 + b c
      1 minus (0)
      2 + a (1)
    4. 间接三元式序列

      op arg1 arg2
      0 + b c
      1 minus (0)
      2 + a (1)
      instruction
      0 (0)
      1 (1)
      2 (2)

    参考

    6.2.2

    对下列赋值语句重复练习 6.2.1

    1. a = b[i] + c[j]
    2. a[i] = b*c - b*d
    3. x = f(y+1) + 2
    4. x = *p + &y

    解答

    1. a = b[i] + c[j]

      • 四元式

          0) =[]   b    i    t1
          1) =[]   c    j    t2
          2) +     t1   t2   t3
          3) =     t3        a  
        
      • 三元式

          0) =[]   b    i
          1) =[]   c    j
          2) +     (0)  (1)
          3) =     a    (2)  
        
      • 间接三元式

          0) =[]   b    i
          1) =[]   c    j
          2) +     (0)  (1)
          3) =     a    (2)  
          
          0) 
          1)
          2)
          3)
        
    2. a[i] = b*c - b*d

      • 四元式

          0) *    b    c    t1
          1) *    b    d    t2
          2) -    t1   t2   t3
          3) []=  a    i    t4
          4) =    t3        t4
        
      • 三元式

          0) *    b    c
          1) *    b    d
          2) -    (0)  (1)
          3) []=  a    i
          4) =    (3)  (2)
        
      • 间接三元式

          0) *    b    c
          1) *    b    d
          2) -    (0)  (1)
          3) []=  a    i
          4) =    (3)  (2)
          
          0)
          1)
          2)
          3)
          4)
        
    3. x = f(y+1) + 2

      • 四元式

          0) +        y    1    t1
          1) param    t1
          2) call     f    1    t2
          3) +        t2    2   t3
          4) =        t3        x
        
      • 三元式

          0) +        y     1
          1) param    (0)
          2) call     f     1
          3) +        (2)   2
          4) =        x     (3)
        
      • 间接三元式

          0) +        y     1
          1) param    (0)
          2) call     f     1
          3) +        (2)   2
          4) =        x     (3)
          
          0)
          1)
          2)
          3)
          4)
        

    参考

    6.2.3 !

    说明如何对一个三地址代码序列进行转换,使得每个被定值的变量都有唯一的变量名。

  • 相关阅读:
    disabled
    C# 实例化顺序
    session问题
    Node js文件系统
    Node js WEB模块
    Node js GET POST请求
    Node js路由
    Node js函数
    Node js模块系统
    Node js 安装+回调函数+事件
  • 原文地址:https://www.cnblogs.com/juicy33/p/12717960.html
Copyright © 2020-2023  润新知