using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ICSharpCode.Decompiler.IL { public enum OpCode { /// /// No operation. Takes 0 arguments and returns void. /// /// Nop, /// /// Pops the top of the evaluation stack and returns the value. /// Does not correspond to any IL instruction, but encodes the implicit stack use by the IL instruction. /// /// Pop, /// /// Peeks at the top of the evaluation stack and returns the value. /// Corresponds to IL 'dup'. /// Peek, /// /// Ignore the arguments and produce void. Used to prevent the end result of an instruction /// from being pushed to the evaluation stack. /// /// Void, /// /// Unary operator that expects an input of type I4. /// Return 1 (of type I4) if the input value is 0. Otherwise, return 0 (of type I4). /// /// LogicNot, /// /// Adds two numbers. /// Add, /// /// Subtracts two numbers. /// Sub, /// /// Multiplies two numbers. /// Mul, /// /// Division. /// Div, /// /// Division remainder. /// Rem, /// /// Unary negation. /// Neg, /// /// Bitwise AND. /// BitAnd, /// /// Bitwise OR. /// BitOr, /// /// Bitwise XOR. /// BitXor, /// /// Bitwise NOT. /// BitNot, /// /// Retrieves the RuntimeArgumentHandle. /// Arglist, /// /// if (cond) goto target; /// /// ConditionalBranch, /// /// goto target; /// /// Branch, Leave, /// /// Breakpoint instruction. /// DebugBreak, /// /// Compare equal. /// Returns 1 (of type I4) if two numbers or object references are equal; 0 otherwise. /// /// Ceq, /// /// Compare greater than. /// For integers, perform a signed comparison. /// For floating-point numbers, return 0 for unordered numbers. /// /// Cgt, /// /// Compare greater than (unordered/unsigned). /// For integers, perform a signed comparison. /// For floating-point numbers, return 1 for unordered numbers. /// /// Cgt_Un, /// /// Compare less than. /// For integers, perform a signed comparison. /// For floating-point numbers, return 0 for unordered numbers. /// /// Clt, /// /// Compare less than (unordered/unsigned). /// For integers, perform a signed comparison. /// For floating-point numbers, return 1 for unordered numbers. /// /// Clt_Un, /// /// Call a method. /// Call, /// /// Call a method using virtual dispatch. /// CallVirt, /// /// Checks that the float on top of the stack is not NaN or infinite. /// Ckfinite, /// /// Numeric cast. /// Conv, /// /// Loads the value of a variable. (ldarg/ldloc) /// /// LdLoc, /// /// Loads the address of a variable. (ldarga/ldloca) /// /// LdLoca, /// /// Stores a value into a variable. (starg/stloc) /// /// StLoc, /// /// Loads a constant string. /// LdStr, /// /// Loads a constant 32-bit integer. /// LdcI4, /// /// Loads a constant 64-bit integer. /// LdcI8, /// /// Loads a constant floating point number. /// LdcF, /// /// Loads a null reference. /// LdNull, /// /// Returns from the current method or lambda. /// or , depending on whether /// the method has return type void. /// Ret, /// /// Shift left. /// Shl, /// /// Shift right. /// Shr, /// /// Load instance field. /// Ldfld, /// /// Load instance field address. /// Ldflda, /// /// Store to instance field. /// Stfld, /// /// Load static field. /// Ldsfld, /// /// Load static field address. /// Ldsflda, /// /// Store to static field. /// Stsfld, /// /// Test if object is instance of class or interface. /// IsInst, LdInd, UnboxAny, NewObj, Throw, /// /// A block of IL instructions. /// Block, /// /// A container of IL blocks. /// BlockContainer, /// /// Returns the length of an array as 'native unsigned int'. /// LdLen, } }