某機器採用16位字長指令,
(1)若採用定長操作碼,地址碼5位,現已定義60條二地址指令,那麼一地址指令最多多少條?
(2)修改(1)條件爲不定長操作碼,其餘不變,答案如何?
1:
二地址指令格式如下
op操作碼6位 |
地址碼1:5位 |
地址碼2:5位 |
萬變指令格式不會變,定長操作碼,即操作碼定死爲6
又二地址指令有60條
6位總共能編碼2^6=64條
一地址指令=總編碼數-二地址指令條數=64-60=4條
2:
指令格式還是不變如上圖
但是操作碼不定死6了,它可以變動,拓展幾位可以編碼更多的指令
首先,已經佔用了60條,還剩4種編碼即如下四種情況:
op操作碼6位(前面4個1) |
00 |
空,可利用 |
地址碼1:5位 |
op操作碼6位(前面4個1) |
01 |
空,可利用 |
地址碼1:5位 |
op操作碼6位(前面4個1) |
10 |
空,可利用 |
地址碼1:5位 |
op操作碼6位(前面4個1) |
11 |
空,可利用 |
地址碼1:5位 |
這四種情況即用2位可以表示,那麼這兩位可以作爲拓展碼(拓展標誌)
當發現有拓展標誌的時候,後面兩個地址碼只用了一個,那麼空出來的那5位地址碼可以用來編碼一地址指令
即一指令=4種情況*2^5=4*32=128條