Ell*_*lle 0 assembly mips cpu-architecture
在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 0010 与 1000 0000 0000 0000 0000 0000 000 0 0000。第二个似乎是 32 位(4 字节)与首先是 4 位的差异。
我唯一能想到的是,必须将 PC 乘以 8 才能得到单词的实际起点。加4应该还不够吧?有人可以解释一下我缺少什么吗?
因为机器是字节寻址的而不是位寻址的;因此加 4 会使指针前进 32 位。
地址总线需要以字节为单位的位置。没有办法对各个位进行寻址。
完全有可能它实际上将 PC 加 1,而寄存器中甚至不存在低两位。至少有一个处理器是这样工作的。
| 归档时间: |
|
| 查看次数: |
8495 次 |
| 最近记录: |