什么决定了程序计数器的大小?
所以,这就是我所知道的:
内存地址寄存器(MAR)大小是log2(内存空间)。
PC的大小是否与每个内存地址的可寻址性相同或与MAR相同?
例如,如果存储空间为16M且每个存储空间为16位可寻址,那么MAR大小将为24位可寻址,以指定存储器地址位置。
PC的大小是24位 - 与MAR或32位相同 - 每个空间的可寻址性吗?
答案 0 :(得分:1)
这完全取决于硬件设计师的想法。
答案 1 :(得分:0)
我不知道MAR是什么,但通常你的program counter
(AKA instruction pointer
)寄存器足以解决所有程序内存问题。通常
原始的i80x86 CPU将指令指针有效地分成2段,段选择器和偏移量。使用这2个部分形成访问物理存储器时进入地址总线的实际地址。在所谓的实际寻址模式中,地址只是segment selector * 16 + offset
。这两个部分是16位,这种寻址方案允许您访问大约1MB的内存。如果您只更改了指令指针而从不更改了段,则将其限制为64KB。还有其他处理器具有拆分指令指针。德州仪器'例如,TMS320C54xx。
回到x86 ...在64位x86 CPU上,指令指针长度为64位。但是,CPU可能不会(并且我认为仍然不支持)只使用低52位左右的完整64位存储器地址。这是一个示例,其中指令指针大于访问所有内存所需的指令。