Re: [問題] 最近在看白算盤有個小疑問

看板CSSE (電腦科學及軟體工程)作者 (mick doohan)時間14年前 (2010/06/02 18:58), 編輯推噓1(1012)
留言13則, 8人參與, 最新討論串2/2 (看更多)
※ 引述《icetofux ()》之銘言: : 大家好,最近在閱讀白算盤,有個地方讓我有點疑惑,但週遭找不到人可以討論,所以想 : 向版上先進們請教: : 書上第二章提到MIPS架構上,一個指令機械碼長度為 1(word) = 4(byte) = 32(bit)。 : 但是第三章提到條件跳躍指令以外,每執行一個指令PC會加4。 : PC反映出程式記憶體的位址,如果指令機械碼在程式記憶體中是連續的,那麼每個指令 : 的間隔應該是如第二章所述1(word)/4(byte)/32(bit)。所以我想PC每加1應該是跳過1 : byte,然而這樣做有什麼好處呢?既然一條指令機械碼有4byte,PC的增減應該都要以 : 4byte為單位才對,那麼PC設計成一次可以增加1byte似乎沒有太大的意義? : 先謝謝大家了。 MIPS的架構不是32位元的時候才提出來的. 所以我認為, 應該是在32位元的環境下, PC每次加4. 如果是在以前, 16位元的環境下, PC每次就是加2. MIPS64應該就是PC=PC+8. 原有的演算法可以保留下來, 不必為了新增加的位元而改變PC值增加的方法. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.180.129

06/02 22:34, , 1F
可是以16位元為基礎進行制定,PC卻以8位元為基礎也不太
06/02 22:34, 1F

06/02 22:34, , 2F
合理的樣子...
06/02 22:34, 2F

06/02 22:55, , 3F
記憶體的容量(位址線和資料線)決定位元數
06/02 22:55, 3F

06/02 23:26, , 4F
又不是 C,(int *) 每 + N 就自動移 sizeof(int) * N。
06/02 23:26, 4F

06/02 23:26, , 5F
都已經到 machine code level 了,直接對應沒什麼不合理。
06/02 23:26, 5F

06/02 23:26, , 6F
難道要為了這個再做一個抽象層,在 PC 前面多 lay 一個
06/02 23:26, 6F

06/02 23:26, , 7F
乘法器?
06/02 23:26, 7F

06/03 19:20, , 8F
mips64 指令還是 32-bit...
06/03 19:20, 8F

06/03 23:46, , 9F
這電路很簡單,PC counter裝個1-to-3 mux for clock即可
06/03 23:46, 9F

06/04 16:41, , 10F
mips 從一開始就是32-bit吧
06/04 16:41, 10F

06/08 20:49, , 11F
有 mips16
06/08 20:49, 11F

06/09 17:16, , 12F
所以? 樓上想表達的是?
06/09 17:16, 12F

07/31 23:59, , 13F
把address bus shift 2 pins,就可以PC+1, Memory一次跳4
07/31 23:59, 13F
文章代碼(AID): #1C1Zbkyj (CSSE)
討論串 (同標題文章)
文章代碼(AID): #1C1Zbkyj (CSSE)