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,
}
}