0

示例:CPU 有x 个寄存器,指令编码的y位用于引用寄存器操作数。一条指令可以指定多少个寄存器操作数?架构未知。

有没有通用的解决方案?

4

1 回答 1

3

这个问题已经很笼统了——你需要编码你希望指令在哪些寄存器上工作(以 x86 为例,mov eax, ebx需要该架构中可用的总寄存器中的 2 个,inc ecx需要一个)。

您有 x 个寄存器,因此您需要 log2(x) 位来对每个寄存器进行编码。由于您只允许 y 位,并且您最多可以在一条指令中对 floor(y/log2(x)) 寄存器进行编码。

(好吧,如果您有多余的位,您仍然可以将它们用于对某些东西进行部分编码,但这可能不是问题所要测试的......)

于 2013-09-23T19:56:30.600 回答