x86 - 寄存器数量与保留位数

x86 - Number of registers vs number of reserved bits

我是装配新手,我的问题是:

例如,如果一台机器有 n 个寄存器。汇编指令中需要保留多少位来寻址 n 个寄存器中的每一个?

功能拆分可以减少多少所需的位数?

对此没有统一的答案。显然,您最多需要 个足够的位来存储寄存器的数量。因此,如果您有 12 个寄存器,则需要 4 位 (2^4 == 16)。

但是一个指令集可以以不同的方式处理某些寄存器(例如,具有仅隐式寻址特定寄存器的指令;请参阅 LOOP for x86)。所以一个 CPU 可以有 9 个寄存器,但是因为一个只能用专门的指令访问,你只需要 3 位来寻址剩下的 8 个。另外,一些指令只允许寄存器的某个子集,因此也减少寻址它们所需的位数(例如,一条指令只允许对寄存器 0-3 进行操作)。

更复杂的是,register windows 仅使物理寄存器的一个子集可用于指令集。