2013-08-27 122 views
0

我必須寫使用IAS指令集的節目有兩個2×2矩陣相乘,結果存儲在另一個矩陣C.我看到他人發佈傢伙矩陣另外一個程序:矩陣乘法採用IAS指令集

********************** 
* Initialize a variable 'count' to 999 

Label: TOP 
00000001 LOAD M(A[count])   Transfer M(A[count]) to the accumulator 
00000101 ADD M(B[count])    Add M(B[count]) to AC and store result in AC 
00100001 STOR M(C[count])   Transfer contents of accumulator to memory location C[count] 
00001010 LOAD M(address of count) Transfer the contents of M(address of count) to the AC 
00000110 SUB M(the number 1)   Subtract one from AC and store in AC 
00100001 STOR M(D)     Transfer contents of AC to location M(D) 
00001111 JUMP+ M(X,0:19)    If number in accumulator is non-negative take next 
             instruction from left half of M(X) 

************************** 

我們如何初始化變量'count'爲999?

+0

** [1950 IAS](http://en.wikipedia.org/wiki/IAS_machine)** ?!爲什麼你必須爲*那個架構編寫一個程序? – nneonneo

回答

0

答:國際會計準則沒有立即規定,但假定內存已經有正確的常量,就像它假設內存有某種程度上的一樣。

黑客: 有可能使用其他未使用的比特。 LAC <<= 1指示,但一個將需要浪費6名的指令進行編碼的值999有:

LEFT and RIGHT instructions 1 and 2 at Selector 0: 20 xxxx 20 1998 
L/R instructions 3 and 4   at Selector 1: 20 xxxx 20 999 
Left instruction 5: LOAD AC <- S(0) 
Right instruction 6: AC -= S(1) 

實際上,這將減(垃圾+ 1998) - (垃圾+ 999)=> 999

其他黑客也需要依靠編碼非零值的指令,然後強制產生負值,並重復將其右移以形成常數-1。