我想使用Mono Cecil编写MSIL解释器来解析但是解释我想自己做。我见过很多例子,但主要仅用于表达。如何描述MSIL的操作语义?我不知道如何从这个任务开始,所以任何建议都是有价值的。
答案 0 :(得分:2)
简化很多,您需要调用堆栈的堆栈帧,每个堆栈帧包含本地变量和每个方法所需的本地堆栈。
这也可以在平面堆栈中实现,在这种情况下,您只需要跟踪变量IO的返回指针和当前偏移量。
OpCodes文档应该可以很好地概述CIL代码如何与该结构进行交互。
由于特殊情况,解释完整的可执行文件相当多 - 您必须重新实现部分运行时(和框架,对于需要从运行时进行协作的方法)和the relevant specification跨越几百页。
您还可以查看Mono source code,但由于本地运行,这很可能比您想要做的更多。