看板 CSSE 關於我們 聯絡資訊
※ 引述《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
icetofux:可是以16位元為基礎進行制定,PC卻以8位元為基礎也不太 06/02 22:34
icetofux:合理的樣子... 06/02 22:34
Kerick:記憶體的容量(位址線和資料線)決定位元數 06/02 22:55
tinlans:又不是 C,(int *) 每 + N 就自動移 sizeof(int) * N。 06/02 23:26
tinlans:都已經到 machine code level 了,直接對應沒什麼不合理。 06/02 23:26
tinlans:難道要為了這個再做一個抽象層,在 PC 前面多 lay 一個 06/02 23:26
tinlans:乘法器? 06/02 23:26
remember:mips64 指令還是 32-bit... 06/03 19:20
proach:這電路很簡單,PC counter裝個1-to-3 mux for clock即可 06/03 23:46
ksmrt0123:mips 從一開始就是32-bit吧 06/04 16:41
bobhsiao:有 mips16 06/08 20:49
ksmrt0123: 所以? 樓上想表達的是? 06/09 17:16
lcd242:把address bus shift 2 pins,就可以PC+1, Memory一次跳4 07/31 23:59