2014-09-15 4 views
0

약간의 문제가 있습니다. 작성한 메소드에 Mono.Cecil과 함께 Collection of Instructions를 삽입하려고합니다. Mono.Cecil 새 지침 만들기

Collection<Instruction> InstructionList = new Collection<Instruction>(); 

예를 들어 "징벌"또는 같은 어떤 피연산자가없는 일반 명령을 추가하려면 "ldarg.0"난 그냥 이렇게 :

InstructionList.Add(Instruction.Create(OpCodes.Ret)); 

을하지만 내가이있는 명령을 만드는 문제가 이러한 (이미지)과 같은 피연산자 :

http://puu.sh/bzWi8/710c8008df.png

사람이 어떻게 ldsfld 빈 문자열 또는 br.s 또는 callvir처럼,이 피연산자 명령을 추가하는 나를 설명 할 수 티.

나는 이것을하는 방법을 모른다.

InstructionList.Add(Instruction.Create(OpCodes.Ldsfld, ModuleDef.Import(typeof(System.String)))); 

그러나 예외가 발생합니다 :

내 시도는이 있었다 형식 'System.ArgumentException'처리되지 않은 예외가 Mono.Cecil.dll 에 추가 정보 발생 동작 코드

사람 수를 이 "더 복잡한"지침을 추가하는 방법을 설명해주십시오.

+1

당신은 그것을 두 피연산자를 줄 필요가 있어야한다이다 즉 유형과 값 – leppie

+0

방법이 값이 같을 것이다? (미안 나는 이것에 아주 경험되지 않는다) –

답변

0

InstructionList.Add (Instruction.Create (OpCodes.Ret));

는,

InstructionList.Add(Instruction.Create(OpCodes.Ret, null));