0

少し問題があります。作成したメソッドに 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))));

しかし、例外がスローされます:「System.ArgumentException」タイプの未処理の例外が Mono.Cecil.dll で発生しました追加情報: OpCode

これらの「より複雑な」命令を追加する方法を誰かに説明してもらえますか?

4

1 に答える 1