汇编中的自修改代码

self modifying code in assembly

我如何在 mips 32 程序集中编写自修改代码,使一个函数调用另一个函数(不在其中添加函数调用)?我必须在运行时修改函数的代码,以便它调用另一个函数。

以所有神圣的名义不要!

  1. 汇编程序通常嵌入在 ROM 中,因此它不起作用。
  2. 任何具有该死的安全性的 OS 都不会让您修改代码段或执行数据。
  3. 有一个特殊地狱是为那些这样做的人保留的,被我们这些曾经不得不维护该死的东西的人的诅咒所围困!

MIPS 有一个用于跳转的寄存器模式 -

    jr $rs

将要跳转的地址移动到寄存器中,然后跳转。它的功能等同于将地址压入堆栈并执行 return。如果要调用该函数,请将跳转到其自己的子例程中,以便被调用函数的 return 返回给调用者。