2016-05-05 41 views
0

我需要创建MAL的扩展。 所以,首先我曾试图在mic1sim.mal如何在IJVM上创建IUSHR4?

MAR = SP = SP + 1; rd    // read top of the stack 
H = TOS       // H will be a SP 
MDR = H = H >> 1; wr    // SHIFT 1 and write on MDR 
MDR = H = H >> 1; wr     // SHIFT 1 + 1 = 2 
MDR = H = H >> 1; wr    // SHIFT 1 + 1 + 1 = 3 
MDR = H = H >> 1: wr    // 4th shift 
TOS = MDR; goto Main1    // TOS updated 

增加但不工作!有人能解释我在哪里我错了吗?

回答

0

SP指向栈顶。 SP + 1指向不再在堆栈上的数据。读取此值将返回垃圾。在第三条指令中,有两个不同值写入MDR的条件:ALU操作的结果和第一条指令的读操作的内存数据。

每次班次后都没有必要写。计算H中的结果。完成后,将H的值存储到MDR中并将值写入堆栈。

在指令开始时,TOS已经在栈上具有最高值。没有必要阅读它。