計算機組成原理:擴展操作碼技術

今天有個好友問我一道《計算機組成原理》(唐朔飛) 中的例題,是關於擴展操作碼的,爲了讓自己理解更加深刻一點,就寫了這篇博客.

首先看看什麼是擴展操作碼技術:

當採用統一操作碼,指令長度與各類指令的地址長度發生矛盾時,通常採用“擴展操作碼”技術加以解決。 擴展操作碼是一種指令優化技術即讓操作碼的長度隨地址數的減  少而增加(即擴展)。根據不同的地址指令格式,如三地址、二地址、單地址指令等,操作碼的位數可以有不同的選擇,從而在滿足需要的前提下有效地縮短了指令長度

問題:(書本302頁的例7.2)

       假設指令字長爲16位,操作數的地址碼爲6位,指令有零地址、一地址、二地址三種格式.採用擴展操作碼技術,若二地址指令有X種,零地址指令有Y種,則一地址指令最多有幾種?

 書上給出的解答是: 採用擴展操作碼技術,操作碼位數可變,則二地址、一地址和零地址的操作碼長度分別爲4位、10位和16位.可見二地址指令操作碼每減少一種,就可多構成2^6種一地址指令操作碼;一地址指令操作碼每減少一種,就可多構成2^6種零地址指令操作碼.好友對於劃線處不太理解,我個人的解釋爲:減少一條二地址指令,就是將一個特定的4位操作碼變爲一地址指令,地址就是6位,還有10位,除去特定的4位,還有10-4位可以任意組合,所以就是2^6種,零地址也是一樣.

所以一地址指令最多有 ( 2^4 - X ) * 2^6 種,設一地址指令有M種,則零地址指令最多有 [ ( 2^4 - X ) * 2^6 - M ] * 2^6 種.根據題中給出零地址有Y種,即Y = [ ( 2^4 - X ) * 2^6 - M ] * 2^6 ,則一地址指令M = ( 2^4 - X ) * 2^6 - Y * 2^6

 

附加一道題幫助理解吧!這道題是教我們這門課的林楠老師的PPT上的一道例題.

某指令系統,指令字長爲16位,地址碼長度爲4位,試提出一種分配方案,使該指令系統有15條三地址指令,14條兩地址指令,31條單地址指令,並留有表示零地址指令的可能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章