2016-05-05 37 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已經在棧上具有最高值。沒有必要閱讀它。