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