如果我接受一条指令并将其分解为其操作码、rs、rt 等的二进制表示...然后我可以将此二进制数放入寄存器并让 MIPS 将其视为指令吗?
例如:
指令: add $t0, $s0, $t0
分解为:
000000 10010 01000 01000 00000 100000
对应整数:18696
我可以将此整数存储在寄存器中,然后让 MIPS 将其视为指令吗?
我提出这个问题时考虑到了自我修改代码的想法。
如果我接受一条指令并将其分解为其操作码、rs、rt 等的二进制表示...然后我可以将此二进制数放入寄存器并让 MIPS 将其视为指令吗?
例如:
指令: add $t0, $s0, $t0
分解为:
000000 10010 01000 01000 00000 100000
对应整数:18696
我可以将此整数存储在寄存器中,然后让 MIPS 将其视为指令吗?
我提出这个问题时考虑到了自我修改代码的想法。
正确答案是——不。正如一位比我第一次更仔细阅读问题的用户在评论中指出的那样,必须首先将值写入内存,然后加载存储该值的内存的地址值,然后跳转给它。
您可能想了解更多JIT 编译器的工作原理,因为它们使用大量代码修改(需要明确的是,它们不会修改代码生成器,但它们会在执行期间对生成的代码进行大量实时修补)。