编译原理第二版6.2答案

6.2 节的练习

6.2.1

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

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

    6 2 1

  2. 四元式序列

    oparg1arg2result
    0+bct1
    1minust1t2
    2+at2t3
  3. 三元式序列

    oparg1arg2
    0+bc
    1minus(0)
    2+a(1)
  4. 间接三元式序列

    oparg1arg2
    0+bc
    1minus(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 !

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

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值