2011-09-24 43 views
2

如果我接受一条指令并将其分解为其操作码rs,rt等的二进制表示形式,然后我可以将这个二进制数字写入一个寄存器并让MIPS将其作为指令处理?我可以执行存储在寄存器中的数字作为MIPS中的指令吗?

例如:

指令:add $t0, $s0, $t0

分解为:

000000 10010 01000 01000 00000 100000

,其对应于所述整数:18696

能予该整数存储在一个注册,然后让MIPS把它当作指令来对待它?

我问这个想法的自修改代码的想法。

回答

4

正确答案是 - no。正如在比我第一次更仔细地阅读问题的用户的评论中指出的那样,必须先将值写入内存,然后加载存储该值的内存的地址值,然后跳转到它。

您可能想要了解更多JIT compilers的工作原理,因为它们使用大量代码修改(显然,它们不会修改代码生成器,但它们会在执行过程中对生成的代码进行大量实时修补)。

+1

这是无稽之谈。现代CPU不能将当前的寄存器值送入指令译码器并执行。您想要作为指令执行的值必须写入内存。 JIT编译器不会自行修改,它们动态地在内存中创建代码块,并导致正在编译的程序分支并执行它们。 – markgz

+0

@markgz 你是绝对正确的。我错误地阅读了这个问题,因此我给出了错误的答案。谢谢。 – MannyNS

相关问题