例如,对于8位CPU,堆栈大小预计为8位宽,而16位CPU vs 16位堆栈宽度,以及32位、64位CPU等。对于所有架构都是如此吗?
CPU有数据总线和地址总线。它们可以具有相同的宽度,但通常不是。
堆栈指针是指向内存的指针,因此它通常与地址总线一样宽,除非内部使用了一些(奇怪/模糊的)转换。指令指针(指向当前指令)也是指向内存的指针,并且与堆栈指针一样宽。
其他寄存器主要处理数据,因此具有与数据总线相同的尺寸。但和往常一样,也有例外。
举个老例子。 6502。一个8位cpu(8位数据总线,16位地址总线)。它具有(或多或少)通用寄存器 X 和 Y,以及称为 A 的“累加器”。所有 8 位寄存器。有一个堆栈指针和一个指令指针,堆栈指针有8个显式位和8个隐式位(堆栈总是在同一个256字节区域中),因此堆栈指针寄存器有8位,指令指针有16位。
8086 有一个 16 位数据总线和一个 20 位地址总线。一般寄存器有8位(和16位)。指令指针和堆栈指针为 16 位,但使用段寄存器(也是 16 位)来获取完整的 20 位地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)