2016-09-10 65 views
0

我想解決一個與指令編碼有關的問題。我有一個處理器,指令長度爲18位,我需要檢查下列指令編碼是否可能。 一個)5個三個地址指令 B)95個的兩個地址指令 C)31級一個地址的指令 d)70零點地址的說明通過指令集編碼的指令地址

現在我能夠做部分(a)如下

XXX XXXXX XXXXX XXXXX

000 XXXXX爲XXXXX爲XXXXX

001 XXXXX爲XXXXX爲XXXXX

010 XXXXX爲XXXXX爲XXXXX

011 XXXXX爲XXXXX爲XXXXX

100 XXXXX爲XXXXX爲XXXXX

我可以從上面的編碼得到我的五個3地址的說明,但現在我需要 95分兩個地址的說明和進一步的人,但我似乎無法要解決(b)部分,因爲三條指令都留下了,我不知道如何處理剩下的部分。

101爲XXXXX XXXXX XXXXX 110爲XXXXX XXXXX XXXXX 111爲XXXXX XXXXX XXXXX

這些剩餘的三個指令和由它們我還需要以編碼(c)和(d)part.So任何幫助將不勝感激。

+0

嗯 - 我可以做a)通過c)但是我在70零地址指令中發現麻煩 - 我只能適應32. –

+0

是的我現在也面臨同樣的事情...我猜d)選項是不可能的。你可以分享你解決前三個問題的方法,那樣會有所幫助。 –

+0

當然 - 見下文。 –

回答

0

你不是在問題中拼寫出來,但我得到的印象是這些xxxxx字段是3地址指令中的5位地址字段。如果是這樣的話,如你所示,你在步驟a)後留下的是三個前綴101,110和111.

對於編碼2地址指令,然後,你有第3個地址字段在你的除了三個「免費」前綴之外的處置。由於地址字段是5位,所以它可以編碼32個不同的值。三次32是96,這是很好的,因爲你「只」需要95兩個地址指令,所以如下那些可以編碼:

101 00000 xxxxx xxxxx ... 101 11111 xxxxx xxxxx 
110 00000 xxxxx xxxxx ... 110 11111 xxxxx xxxxx 
111 00000 xxxxx xxxxx ... 111 11110 xxxxx xxxxx 

中未使用的8位前綴,111 11111,可以然後被用於編碼下一個沿1地址指令 - 現已 - 地址時隙:

111 11111 00000 xxxxx ... 111 11111 11110 xxxxx 

哪個葉13位前綴111 11111 11111用於編碼所述零地址的指令:

111 11111 11111 00000 ... 111 11111 11111 11111 

不幸的是,由於只有一個可用於編碼剩餘零地址指令的5位地址字段,所以我只能適用其中的32個地址字段,而不是所需的70個地址字段。

+0

嗯我沒有正確拼寫地址字段,但我現在d)選項是不可能的。非常感謝您的幫助! –