1

有什么方法可以存储当前指令的位置,以便将来可以分支回到它。

我正在尝试实现一些类似 GOSUB 的功能。

现在,Branch 指令接受一个参数,该参数表示相对于要跳转到的当前位置的字节数。它很容易将标签存储到我想去的地方,然后分支到它。如果我可以在分支之前存储当前位置,那么在返回时我可以获取新的当前位置 - 存储的位置并将其传递给 Branch..

但我不知道如何......有什么想法吗?

4

1 回答 1

1

Afaik(我已经完成了大量的 IL),不,这是不可能的即使是这样,它也几乎肯定会导致无法验证的 IL(不好),因为没有办法证明堆栈是平衡的。还要记住,偏移量是 IL 指令的一部分,而不是堆栈 - 所以你不能将它存储在本地(或堆栈上)并重新加载它等等。

只需更简洁地构建代码即可;在必要时使用调用来调用子方法,也许是跳转表(本质上是“切换”)。

于 2011-03-02T16:49:18.597 回答