public Instruction Create(OpCode opcode, byte value) { if (opcode.OperandType == OperandType.ShortInlineVar) { return(Instruction.Create(opcode, body.Variables[value])); } if (opcode.OperandType == OperandType.ShortInlineArg) { return(Instruction.Create(opcode, body.GetParameter(value))); } return(Instruction.Create(opcode, value)); }
public static void ExpandMacro(ref OpCode opCode, ref object operand, MethodBody methodBody) { if (opCode.OpCodeType != OpCodeType.Macro) return; switch (opCode.Code) { case Code.Ldarg_0: opCode = OpCodes.Ldarg; operand = methodBody.GetParameter(0); break; case Code.Ldarg_1: opCode = OpCodes.Ldarg; operand = methodBody.GetParameter(1); break; case Code.Ldarg_2: opCode = OpCodes.Ldarg; operand = methodBody.GetParameter(2); break; case Code.Ldarg_3: opCode = OpCodes.Ldarg; operand = methodBody.GetParameter(3); break; case Code.Ldloc_0: opCode = OpCodes.Ldloc; operand = methodBody.Variables[0]; break; case Code.Ldloc_1: opCode = OpCodes.Ldloc; operand = methodBody.Variables[1]; break; case Code.Ldloc_2: opCode = OpCodes.Ldloc; operand = methodBody.Variables[2]; break; case Code.Ldloc_3: opCode = OpCodes.Ldloc; operand = methodBody.Variables[3]; break; case Code.Stloc_0: opCode = OpCodes.Stloc; operand = methodBody.Variables[0]; break; case Code.Stloc_1: opCode = OpCodes.Stloc; operand = methodBody.Variables[1]; break; case Code.Stloc_2: opCode = OpCodes.Stloc; operand = methodBody.Variables[2]; break; case Code.Stloc_3: opCode = OpCodes.Stloc; operand = methodBody.Variables[3]; break; case Code.Ldarg_S: opCode = OpCodes.Ldarg; break; case Code.Ldarga_S: opCode = OpCodes.Ldarga; break; case Code.Starg_S: opCode = OpCodes.Starg; break; case Code.Ldloc_S: opCode = OpCodes.Ldloc; break; case Code.Ldloca_S: opCode = OpCodes.Ldloca; break; case Code.Stloc_S: opCode = OpCodes.Stloc; break; case Code.Ldc_I4_M1: opCode = OpCodes.Ldc_I4; operand = -1; break; case Code.Ldc_I4_0: opCode = OpCodes.Ldc_I4; operand = 0; break; case Code.Ldc_I4_1: opCode = OpCodes.Ldc_I4; operand = 1; break; case Code.Ldc_I4_2: opCode = OpCodes.Ldc_I4; operand = 2; break; case Code.Ldc_I4_3: opCode = OpCodes.Ldc_I4; operand = 3; break; case Code.Ldc_I4_4: opCode = OpCodes.Ldc_I4; operand = 4; break; case Code.Ldc_I4_5: opCode = OpCodes.Ldc_I4; operand = 5; break; case Code.Ldc_I4_6: opCode = OpCodes.Ldc_I4; operand = 6; break; case Code.Ldc_I4_7: opCode = OpCodes.Ldc_I4; operand = 7; break; case Code.Ldc_I4_8: opCode = OpCodes.Ldc_I4; operand = 8; break; case Code.Ldc_I4_S: opCode = OpCodes.Ldc_I4; operand = (int) (sbyte) operand; break; case Code.Br_S: opCode = OpCodes.Br; break; case Code.Brfalse_S: opCode = OpCodes.Brfalse; break; case Code.Brtrue_S: opCode = OpCodes.Brtrue; break; case Code.Beq_S: opCode = OpCodes.Beq; break; case Code.Bge_S: opCode = OpCodes.Bge; break; case Code.Bgt_S: opCode = OpCodes.Bgt; break; case Code.Ble_S: opCode = OpCodes.Ble; break; case Code.Blt_S: opCode = OpCodes.Blt; break; case Code.Bne_Un_S: opCode = OpCodes.Bne_Un; break; case Code.Bge_Un_S: opCode = OpCodes.Bge_Un; break; case Code.Bgt_Un_S: opCode = OpCodes.Bgt_Un; break; case Code.Ble_Un_S: opCode = OpCodes.Ble_Un; break; case Code.Blt_Un_S: opCode = OpCodes.Blt_Un; break; case Code.Leave_S: opCode = OpCodes.Leave; break; } }
public ParameterDefinition GetParameter(int index) { return(body.GetParameter(index)); }
public static void ExpandMacro(ref ILCode code, ref object operand, MethodBody methodBody) { switch (code) { case ILCode.__Ldarg_0: code = ILCode.__Ldarg; operand = methodBody.GetParameter(0); break; case ILCode.__Ldarg_1: code = ILCode.__Ldarg; operand = methodBody.GetParameter(1); break; case ILCode.__Ldarg_2: code = ILCode.__Ldarg; operand = methodBody.GetParameter(2); break; case ILCode.__Ldarg_3: code = ILCode.__Ldarg; operand = methodBody.GetParameter(3); break; case ILCode.__Ldloc_0: code = ILCode.Ldloc; operand = methodBody.Variables[0]; break; case ILCode.__Ldloc_1: code = ILCode.Ldloc; operand = methodBody.Variables[1]; break; case ILCode.__Ldloc_2: code = ILCode.Ldloc; operand = methodBody.Variables[2]; break; case ILCode.__Ldloc_3: code = ILCode.Ldloc; operand = methodBody.Variables[3]; break; case ILCode.__Stloc_0: code = ILCode.Stloc; operand = methodBody.Variables[0]; break; case ILCode.__Stloc_1: code = ILCode.Stloc; operand = methodBody.Variables[1]; break; case ILCode.__Stloc_2: code = ILCode.Stloc; operand = methodBody.Variables[2]; break; case ILCode.__Stloc_3: code = ILCode.Stloc; operand = methodBody.Variables[3]; break; case ILCode.__Ldarg_S: code = ILCode.__Ldarg; break; case ILCode.__Ldarga_S: code = ILCode.__Ldarga; break; case ILCode.__Starg_S: code = ILCode.__Starg; break; case ILCode.__Ldloc_S: code = ILCode.Ldloc; break; case ILCode.__Ldloca_S: code = ILCode.Ldloca; break; case ILCode.__Stloc_S: code = ILCode.Stloc; break; case ILCode.__Ldc_I4_M1: code = ILCode.Ldc_I4; operand = -1; break; case ILCode.__Ldc_I4_0: code = ILCode.Ldc_I4; operand = 0; break; case ILCode.__Ldc_I4_1: code = ILCode.Ldc_I4; operand = 1; break; case ILCode.__Ldc_I4_2: code = ILCode.Ldc_I4; operand = 2; break; case ILCode.__Ldc_I4_3: code = ILCode.Ldc_I4; operand = 3; break; case ILCode.__Ldc_I4_4: code = ILCode.Ldc_I4; operand = 4; break; case ILCode.__Ldc_I4_5: code = ILCode.Ldc_I4; operand = 5; break; case ILCode.__Ldc_I4_6: code = ILCode.Ldc_I4; operand = 6; break; case ILCode.__Ldc_I4_7: code = ILCode.Ldc_I4; operand = 7; break; case ILCode.__Ldc_I4_8: code = ILCode.Ldc_I4; operand = 8; break; case ILCode.__Ldc_I4_S: code = ILCode.Ldc_I4; operand = (int) (sbyte) operand; break; case ILCode.__Br_S: code = ILCode.Br; break; case ILCode.__Brfalse_S: code = ILCode.__Brfalse; break; case ILCode.__Brtrue_S: code = ILCode.Brtrue; break; case ILCode.__Beq_S: code = ILCode.__Beq; break; case ILCode.__Bge_S: code = ILCode.__Bge; break; case ILCode.__Bgt_S: code = ILCode.__Bgt; break; case ILCode.__Ble_S: code = ILCode.__Ble; break; case ILCode.__Blt_S: code = ILCode.__Blt; break; case ILCode.__Bne_Un_S: code = ILCode.__Bne_Un; break; case ILCode.__Bge_Un_S: code = ILCode.__Bge_Un; break; case ILCode.__Bgt_Un_S: code = ILCode.__Bgt_Un; break; case ILCode.__Ble_Un_S: code = ILCode.__Ble_Un; break; case ILCode.__Blt_Un_S: code = ILCode.__Blt_Un; break; case ILCode.__Leave_S: code = ILCode.Leave; break; case ILCode.__Ldind_I: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.IntPtr; break; case ILCode.__Ldind_I1: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.SByte; break; case ILCode.__Ldind_I2: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Int16; break; case ILCode.__Ldind_I4: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Int32; break; case ILCode.__Ldind_I8: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Int64; break; case ILCode.__Ldind_U1: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Byte; break; case ILCode.__Ldind_U2: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.UInt16; break; case ILCode.__Ldind_U4: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.UInt32; break; case ILCode.__Ldind_R4: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Single; break; case ILCode.__Ldind_R8: code = ILCode.Ldobj; operand = methodBody.Method.Module.TypeSystem.Double; break; case ILCode.__Stind_I: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.IntPtr; break; case ILCode.__Stind_I1: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Byte; break; case ILCode.__Stind_I2: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Int16; break; case ILCode.__Stind_I4: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Int32; break; case ILCode.__Stind_I8: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Int64; break; case ILCode.__Stind_R4: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Single; break; case ILCode.__Stind_R8: code = ILCode.Stobj; operand = methodBody.Method.Module.TypeSystem.Double; break; } }
public static void ExpandMacro(ref ILCode code, ref object operand, MethodBody methodBody) { switch (code) { case ILCode.__Ldarg_0: code = ILCode.Ldarg; operand = methodBody.GetParameter(0); break; case ILCode.__Ldarg_1: code = ILCode.Ldarg; operand = methodBody.GetParameter(1); break; case ILCode.__Ldarg_2: code = ILCode.Ldarg; operand = methodBody.GetParameter(2); break; case ILCode.__Ldarg_3: code = ILCode.Ldarg; operand = methodBody.GetParameter(3); break; case ILCode.__Ldloc_0: code = ILCode.Ldloc; operand = methodBody.Variables[0]; break; case ILCode.__Ldloc_1: code = ILCode.Ldloc; operand = methodBody.Variables[1]; break; case ILCode.__Ldloc_2: code = ILCode.Ldloc; operand = methodBody.Variables[2]; break; case ILCode.__Ldloc_3: code = ILCode.Ldloc; operand = methodBody.Variables[3]; break; case ILCode.__Stloc_0: code = ILCode.Stloc; operand = methodBody.Variables[0]; break; case ILCode.__Stloc_1: code = ILCode.Stloc; operand = methodBody.Variables[1]; break; case ILCode.__Stloc_2: code = ILCode.Stloc; operand = methodBody.Variables[2]; break; case ILCode.__Stloc_3: code = ILCode.Stloc; operand = methodBody.Variables[3]; break; case ILCode.__Ldarg_S: code = ILCode.Ldarg; break; case ILCode.__Ldarga_S: code = ILCode.Ldarga; break; case ILCode.__Starg_S: code = ILCode.Starg; break; case ILCode.__Ldloc_S: code = ILCode.Ldloc; break; case ILCode.__Ldloca_S: code = ILCode.Ldloca; break; case ILCode.__Stloc_S: code = ILCode.Stloc; break; case ILCode.__Ldc_I4_M1: code = ILCode.Ldc_I4; operand = -1; break; case ILCode.__Ldc_I4_0: code = ILCode.Ldc_I4; operand = 0; break; case ILCode.__Ldc_I4_1: code = ILCode.Ldc_I4; operand = 1; break; case ILCode.__Ldc_I4_2: code = ILCode.Ldc_I4; operand = 2; break; case ILCode.__Ldc_I4_3: code = ILCode.Ldc_I4; operand = 3; break; case ILCode.__Ldc_I4_4: code = ILCode.Ldc_I4; operand = 4; break; case ILCode.__Ldc_I4_5: code = ILCode.Ldc_I4; operand = 5; break; case ILCode.__Ldc_I4_6: code = ILCode.Ldc_I4; operand = 6; break; case ILCode.__Ldc_I4_7: code = ILCode.Ldc_I4; operand = 7; break; case ILCode.__Ldc_I4_8: code = ILCode.Ldc_I4; operand = 8; break; case ILCode.__Ldc_I4_S: code = ILCode.Ldc_I4; operand = (int) (sbyte) operand; break; case ILCode.__Br_S: code = ILCode.Br; break; case ILCode.__Brfalse_S: code = ILCode.__Brfalse; break; case ILCode.__Brtrue_S: code = ILCode.Brtrue; break; case ILCode.__Beq_S: code = ILCode.__Beq; break; case ILCode.__Bge_S: code = ILCode.__Bge; break; case ILCode.__Bgt_S: code = ILCode.__Bgt; break; case ILCode.__Ble_S: code = ILCode.__Ble; break; case ILCode.__Blt_S: code = ILCode.__Blt; break; case ILCode.__Bne_Un_S: code = ILCode.__Bne_Un; break; case ILCode.__Bge_Un_S: code = ILCode.__Bge_Un; break; case ILCode.__Bgt_Un_S: code = ILCode.__Bgt_Un; break; case ILCode.__Ble_Un_S: code = ILCode.__Ble_Un; break; case ILCode.__Blt_Un_S: code = ILCode.__Blt_Un; break; case ILCode.__Leave_S: code = ILCode.Leave; break; } }