汇编语言:程序计数器大小

时间:2011-11-08 22:27:56

标签: assembly size pc

什么决定了程序计数器的大小?

所以,这就是我所知道的:

内存地址寄存器(MAR)大小是log2(内存空间)。

PC的大小是否与每个内存地址的可寻址性相同或与MAR相同?

例如,如果存储空间为16M且每个存储空间为16位可寻址,那么MAR大小将为24位可寻址,以指定存储器地址位置。

PC的大小是24位 - 与MAR或32位相同 - 每个空间的可寻址性吗?

2 个答案:

答案 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位存储器地址。这是一个示例,其中指令指针大于访问所有内存所需的指令。