作者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