在MIPS中,我知道每条指令PC都增加4。这是因为该字位于32位边界(4个字节)上。这对我来说很有意义,自然地,我们需要通过两个连续单词的空间位置差异来增加PC。
例如,我们可能有0x00000000作为PC值,但是,当我们递增PC时,它变为0x00000004。但是,这种差异实际上是4位,而不是4字节(32位)。为什么是0x00000004而不是0x80000000?
从二进制的角度来看,这个问题变为:0000 0000 0000 0000 0000 0000 0000 0000 0000到0000 0000 0000 0000 0000 0000 0000 0010与1000 0000 0000 0000 0000 0000 00000000。第二个似乎是32位(4个字节)的差)与第一个(相差4位)。
我唯一想到的是必须将PC乘以8才能得到单词的实际起点。加4还不够吗?有人可以解释我所缺少的吗?
答案 0 :(得分:2)
因为机器是字节可寻址的,而不是位可寻址的;因此加4会使指针前进32位。
地址总线需要以字节为单位的位置。无法解决单个位。
很有可能实际上是将PC递增1,而寄存器的低2位甚至不存在。至少有一个处理器以这种方式工作。