Mono.Cecil创建新指令
本文关键字:指令 新指令 Cecil 创建 Mono | 更新日期: 2023-09-27 18:22:04
我有一个小问题。我试图在我创建的方法中插入Mono.Cecil的指令集。
Collection<Instruction> InstructionList = new Collection<Instruction>();
要添加一条没有操作数的普通指令,例如"Ret"或"ldarg.0",我只需要这样做:
InstructionList.Add(Instruction.Create(OpCodes.Ret));
但我在创建一个有这样操作数的指令时遇到了问题(图像):
http://puu.sh/bzWi8/710c8008df.png
有人能解释一下如何用这些操作数添加指令吗,比如ldsfld空字符串、br.s或callvirt。
我不知道该怎么做。
我的尝试是:
InstructionList.Add(Instruction.Create(OpCodes.Ldsfld, ModuleDef.Import(typeof(System.String))));
但这引发了一个异常:Mono.ecil.dll中发生了"System.ArgumentException"类型的未处理异常附加信息:OpCode
有人能解释一下如何添加这些"更复杂"的说明吗?
InstructionList.Add(Instruction.Create(OpCodes.Ret));
应该是
InstructionList.Add(Instruction.Create(OpCodes.Ret, null));