我总体上问。由于我必须创建虚拟微控制器,因此我通常试图了解任何微控制器中X索引寄存器的用途。该寄存器的MAR和PC有什么区别?感谢所有答复。
答案 0 :(得分:3)
MAR是一个实现细节。流水线CPU本身可能没有MAR,也可能没有一个MAR,尤其是当它具有可以在同一周期内读写的多端口高速缓存时。
在具有名为X
的寄存器的体系结构中, X
是一个体系结构寄存器,无论其他访问内存的内容如何,它都保留其值。
例如绝对的非索引负载将使用MAR驱动地址总线,但是CPU仍需要为X
保持相同的值。此外,MAR必须与机器中的物理地址一样宽,但是X
只是6502中的8位寄存器。(因此,您只能从给定的基址索引256个字节)。
通常不能直接访问程序计数器,除非是PC相对寻址模式,否则调用指令会将返回地址存储在某个地方。并跳写PC。但是在某些方面,它也是实现细节。流水线CPU不一定必须具有单个PC寄存器。但是标量顺序管道将有效地使PC处于访存阶段。 (或者非流水线CPU当然将只有一台PC。)
大概是通过代码提取将PC复制到MAR ,这是为下一条指令加载机器代码的一部分。
寄存器为X
的建筑包括
IX
register(索引X),由2个8位半部分组成。有关6502和Z80中的寄存器和寻址模式如何不映射到可以用整数索引的指针C模型的一些有趣的详细信息,请参见https://retrocomputing.stackexchange.com/questions/6095/why-do-c-to-z80-compilers-produce-poor-code/。而且不容易支持相对于堆栈的寻址模式,从而使递归变得困难。r27:r26
的16位串联):AVR XYZ Registers。它不仅限于索引。8080具有HL,而不是X。