20171108课后习题

20171108课后习题

1 完成家庭作业4.47,4.48,4.49

2 相应代码反汇编成X86-64汇编

3 把上述X86-64汇编翻译成Y86汇编,并给出相应机器码

4.47

取指阶段 icode:ifun<--M1[PC] = D:0

   valP <= PC + 1  ;下一条指令地址

译码阶段 valB <= R[%ebp] ;得到ebp的值,这个值就是新的栈指针esp的值

执行阶段 valE <= valB + 4 ;栈指针的值+4

访存阶段 valM <= M4[valB] ;读ebp中的值

写回阶段 R[%esp] <= valE ;把更新后的指针赋值给esp

      R[%ebp] <= valM   ;弹出的ebp的值

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 ;把结果写回到目的寄存器中。

posted @ 2017-11-12 23:02  刘威良  阅读(155)  评论(0编辑  收藏  举报