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