我是组装新手,我的问题是:
例如,如果一台机器有 n 个寄存器。在汇编指令中需要保留多少位来寻址 n 个寄存器中的每一个?
功能拆分可以减少多少所需的位数?
我是组装新手,我的问题是:
例如,如果一台机器有 n 个寄存器。在汇编指令中需要保留多少位来寻址 n 个寄存器中的每一个?
功能拆分可以减少多少所需的位数?
对此没有普遍的答案。显然,您最多需要足够的位来存储寄存器的数量。因此,如果您有 12 个寄存器,则需要 4 位(2^4 == 16)。
但是指令集可以以不同的方式处理某些寄存器(例如,具有仅隐式寻址特定寄存器的指令;参见LOOP
x86)。所以一个 CPU 可以有 9 个寄存器,但由于一个只能用专门的指令访问,你只需要 3 位来寻址剩余的 8 个。此外,一些指令只能允许寄存器的某个子集,从而也减少了寻址它们所需的位(例如,一条指令只允许对寄存器 0-3 进行操作)。
更复杂的是,还有寄存器窗口,它只使指令集的物理寄存器子集可用。