Java虚拟机实现iadd microcommand即兴

时间:2013-05-21 09:47:11

标签: java vm-implementation

在这里想问一下我们的计算机结构考试的一些问题。下面是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 

1 个答案:

答案 0 :(得分:0)

可以执行

H = H + MDR

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

0003C8000

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