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