【发布时间】:2012-12-05 01:38:49
【问题描述】:
自 1 月以来,我一直在为 xbox 开发一个虚构的复古虚拟机(我根本没有复制 0x10c,事实上我的项目比较旧。只是把它放在那里以防一些一流的粉丝读到这个),它有 6 个通用用途寄存器。这些是 8 位的,但都可以组合成 3 个 16 位寄存器,内存地址虽然是 16 位,程序计数器也是如此。我知道这是一个愚蠢的问题,但我无法弄清楚,是 16 位还是 8 位??? z80使用16位地址,是8位
【问题讨论】:
-
您必须考虑旧处理器的地址总线和数据总线。地址总线提供了可以访问多少内存的信息(对于地址总线,这在任何情况下都不是真的,但在大多数情况下),数据总线定义了可以存储在累加器寄存器中的最大数量。处理器的位宽主要由其数据总线大小定义,而不是由其地址总线大小定义。
-
通常是市场营销所描述的,它不一定意味着任何相关的东西。通常它与您的寄存器和/或操作的大小有关。你只能做8位alu运算吗? (称它为 8 位)您可以组合寄存器并进行 16 位操作吗? (称之为 16 位)。它可以解决多少是一个单独的主题,并不总是与寄存器大小有关。大多数 8 位处理器可以寻址超过 256 字节,许多 16 位处理器可以寻址超过 65536 字节。
-
没有真正的答案——没有普遍接受的 N 位机器的定义。 Z80 不仅使用 16 位地址,而且还具有您所描述的寄存器对(BC、DE 和 HL)以及 IX 和 IY,以及一些 16 位指令来操作它们。
标签: assembly machine-instruction vm-implementation