Sim*_*mon 6 .net c# il cil opcode
在.net中可以作为方法的最后一条指令存在的可能的OpCode是什么.
目前我知道它可以
但它有可能成为任何其他操作码吗?如果是这样,什么代码(更喜欢c#)会产生它们?
"最后"我指的是"方法体中定义的最终OpCode"
如果throw可以是方法中的最后一个操作码,那么它很可能jmp也符合资格。
另外,如果我们考虑退出条件不位于末尾的递归方法,则最后一个操作码可能是callortail.call而不是 a ret。
更新:嗯,不,不会。正如 Marc Gravell 在他的评论中正确指出的那样,文档中tail.call写道:
除了通过以下调用传输的参数之外,堆栈必须为空。call 指令后面的指令必须是
ret.
更新 2:无条件分支操作码如br和br.s也可能是方法的最后一条指令,如果其退出点出现较早(再次感谢 Marc)。