想在这里问我们计算机结构考试的一些问题。以下是Mic-1 IJVM的添加命令。我们被要求编写新的iaddtriple命令,该命令将添加堆栈的三个高位字并将其再次存储在堆栈中。

iadd1 MAR = SP = SP − 1; rd Read in next-to-top word on stack
iadd2 H = TOS H = top of stack
iadd3 MDR = TOS = MDR + H;wr;go to Main1 Add two top words, write to top of stack


我的答案是;

iaddtriple1 MAR = SP = SP − 1; rd
iaddtriple2 H = TOS H =
iaddtriple3 H = MDR = TOS = MDR + H
iaddtriple4 MAR = SP = SP − 1;
iaddtriple5 MDR = TOS = MDR + H ; wr;go to Main1


我想问一下我的iaddtriple3步骤是否合法。我的一个朋友告诉我H=blabla +H分配应该是非法的,因此不应该使用。但是数据路径周期的时序图证明了我正确。提前致谢。

iaddtriple3  H = MDR = TOS = MDR + H

最佳答案

可以执行

H = H + MDR


由于可以在C总线位中指定H,因此ALU操作为A + B,B寄存器为MDR。实际的微指令是

0003C8000


前两个十六进制数字可以是任何数字,第三个十六进制数字是0或8。

关于java - Java虚拟机实现iadd微命令即兴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16666963/

10-09 19:29