【深入理解计算机系统】家庭作业

2.82

A:我们要求出那个无穷循环的串的数学公式表示。令其为V,则有右移K位,用十进制来列式子有:

     V*2^k=V+Y(高等数学知识)

       则V=Y/(2^k-1)

B:(a) 1/7 (b) 0.6 (c) 1/9

4.48

取指阶段

icode:ifun = M1[PC] = C:0

      rA:rB <= M1[PC+1]

   valC <= M4[PC+2]

   valP <= PC + 6

译码阶段

  valB <= R[rB]

执行阶段

  valE <= valB + valC

      SetCC

访存阶段

写回阶段

  R[rB] <= valE

 

4.50

取指

bool need_regids =

    icode in { IRRMOVL, IOPL, IPUSHL, IPOPL,

       IIRMOVL, IRMMOVL, IMRMOVL, IADDL

 };

bool need_valC =

    icode in { IIRMOVL, IRMMOVL, IMRMOVL, IJXX, ICALL, IADDL

 };

译码和写回

int srcA = [

       icode in { IRRMOVL, IRMMOVL, IOPL, IPUSHL } : rA;

       icode in { IPOPL,IRET } : RESP;

       1 : RNONE; # Don’t need register

      ];

int srcB = [

      icode in { IOPL, IRMMOVL, IMRMOVL, IADDL } : rB;

      icode in { IPUSHL, IPOPL, ICALL, IRET } : RESP;

      icode in { ILEAVE } : REBP;

        1 : RNONE; # Don’t need register

       ];

int dstE = [

       icode in { IRRMOVL} && Cnd: rB;

       icode in { IIRMOVL, IOPL, IADDL } : rB;

       icode in { IPUSHL, IPOPL, ICALL, IRET, ILEAVE } : RESP;

       1 : RNONE; # Don’t write any register

   ];

int dstM = [

        icode in { IMRMOVL, IPOPL}:rA;

        icode in { ILEAVE }: REBP;

       1 : RNONE; # Don’t write any register

      ];

 执行

 int aluA = [

       icode in { IRRMOVL, IOPL } : valA;

       icode in { IIRMOVL, IRMMOVL, IMRMOVL, IADDL} : valC;

       icode in { ICALL, IPUSHL}:-4;

       icode in { IRET, IPOPL, ILEAVE}:4;

       # Other instructions don’t need ALU

      ];

 int aluB = [

       icode in { IRMMOVL, IMRMOVL, IOPL, ICALL,IPUSHL, IRET, IPOPL, ILEAVE, IADDL} : valB;

       icode in { IRRMOVL, IIRMOVL}:0;

       # Other instructions don’t need ALU

      ];

 bool set_cc = icode in { IOPL, IADDL };

 访存

 int mem_addr = [

         icode in { IRMMOVL, IPUSHL, ICALL, IMRMOVL } : valE;

         icode in { IPOPL, IRET } : valA;

         icode in { ILEAVE } : valB;

         # Other instructions don’t need address

        ];

bool mem_read = icode in { IMRMOVL, IPOPL, IRET, ILEAVE};

转载于:https://www.cnblogs.com/20135302wei/p/4894714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值