Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
示例:CPU 有x 个寄存器,指令编码的y位用于引用寄存器操作数。一条指令可以指定多少个寄存器操作数?架构未知。
有没有通用的解决方案?
这个问题已经很笼统了——你需要编码你希望指令在哪些寄存器上工作(以 x86 为例,mov eax, ebx需要该架构中可用的总寄存器中的 2 个,inc ecx需要一个)。
mov eax, ebx
inc ecx
您有 x 个寄存器,因此您需要 log2(x) 位来对每个寄存器进行编码。由于您只允许 y 位,并且您最多可以在一条指令中对 floor(y/log2(x)) 寄存器进行编码。
(好吧,如果您有多余的位,您仍然可以将它们用于对某些东西进行部分编码,但这可能不是问题所要测试的......)