AsmResolver.Net.Msil.MethodBody.ExpandMacro C# (CSharp) Метод

ExpandMacro() приватный Метод

private ExpandMacro ( MsilInstruction instruction ) : void
instruction MsilInstruction
Результат void
        private void ExpandMacro(MsilInstruction instruction)
        {
            switch (instruction.OpCode.Code)
            {
                case MsilCode.Br_S:
                    instruction.OpCode = MsilOpCodes.Br;
                    break;
                case MsilCode.Leave_S:
                    instruction.OpCode = MsilOpCodes.Leave;
                    break;
                case MsilCode.Brfalse_S:
                    instruction.OpCode = MsilOpCodes.Brfalse;
                    break;
                case MsilCode.Brtrue_S:
                    instruction.OpCode = MsilOpCodes.Brtrue;
                    break;
                case MsilCode.Beq_S:
                    instruction.OpCode = MsilOpCodes.Beq;
                    break;
                case MsilCode.Bge_S:
                    instruction.OpCode = MsilOpCodes.Bge;
                    break;
                case MsilCode.Bge_Un_S:
                    instruction.OpCode = MsilOpCodes.Bge_Un;
                    break;
                case MsilCode.Bgt_S:
                    instruction.OpCode = MsilOpCodes.Bgt;
                    break;
                case MsilCode.Bgt_Un_S:
                    instruction.OpCode = MsilOpCodes.Bgt_Un;
                    break;
                case MsilCode.Ble_S:
                    instruction.OpCode = MsilOpCodes.Ble;
                    break;
                case MsilCode.Ble_Un_S:
                    instruction.OpCode = MsilOpCodes.Ble_Un;
                    break;
                case MsilCode.Blt_S:
                    instruction.OpCode = MsilOpCodes.Blt;
                    break;
                case MsilCode.Blt_Un_S:
                    instruction.OpCode = MsilOpCodes.Blt_Un;
                    break;
                case MsilCode.Bne_Un_S:
                    instruction.OpCode = MsilOpCodes.Bne_Un;
                    break;

                case MsilCode.Ldloc_S:
                    instruction.OpCode = MsilOpCodes.Ldloc;
                    break;

                case MsilCode.Ldloca_S:
                    instruction.OpCode = MsilOpCodes.Ldloca;
                    break;

                case MsilCode.Ldloc_0:
                case MsilCode.Ldloc_1:
                case MsilCode.Ldloc_2:
                case MsilCode.Ldloc_3:
                    instruction.Operand = ((IOperandResolver) this).ResolveVariable(instruction.OpCode.Name[instruction.OpCode.Name.Length - 1] - 48);
                    instruction.OpCode = MsilOpCodes.Ldloc;
                    break;

                case MsilCode.Stloc_S:
                    instruction.OpCode = MsilOpCodes.Stloc;
                    break;

                case MsilCode.Stloc_0:
                case MsilCode.Stloc_1:
                case MsilCode.Stloc_2:
                case MsilCode.Stloc_3:
                    instruction.Operand = ((IOperandResolver) this).ResolveVariable(instruction.OpCode.Name[instruction.OpCode.Name.Length - 1] - 48);
                    instruction.OpCode = MsilOpCodes.Stloc;
                    break;

                case MsilCode.Ldarg_S:
                    instruction.OpCode = MsilOpCodes.Ldarg;
                    break;

                case MsilCode.Ldarga_S:
                    instruction.OpCode = MsilOpCodes.Ldarga;
                    break;

                case MsilCode.Ldarg_0:
                case MsilCode.Ldarg_1:
                case MsilCode.Ldarg_2:
                case MsilCode.Ldarg_3:
                    instruction.Operand = ((IOperandResolver) this).ResolveParameter(instruction.OpCode.Name[instruction.OpCode.Name.Length - 1] - 48);
                    instruction.OpCode = MsilOpCodes.Ldarg;
                    break;

                case MsilCode.Starg_S:
                    instruction.OpCode = MsilOpCodes.Starg;
                    break;

                case MsilCode.Ldc_I4_0:
                case MsilCode.Ldc_I4_1:
                case MsilCode.Ldc_I4_2:
                case MsilCode.Ldc_I4_3:
                case MsilCode.Ldc_I4_4:
                case MsilCode.Ldc_I4_5:
                case MsilCode.Ldc_I4_6:
                case MsilCode.Ldc_I4_7:
                case MsilCode.Ldc_I4_8:
                    instruction.Operand = instruction.OpCode.Name[instruction.OpCode.Name.Length - 1] - 48;
                    instruction.OpCode = MsilOpCodes.Ldc_I4;
                    break;
                case MsilCode.Ldc_I4_S:
                    instruction.OpCode = MsilOpCodes.Ldc_I4;
                    break;
                case MsilCode.Ldc_I4_M1:
                    instruction.OpCode = MsilOpCodes.Ldc_I4;
                    instruction.Operand = -1;
                    break;
            }
        }