Opcode.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Reflection / Emit / Opcode.cs / 1 / Opcode.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
namespace System.Reflection.Emit {
using System; 
using System.Security.Permissions; 

[System.Runtime.InteropServices.ComVisible(true)] 
public struct OpCode
{
    internal String m_stringname;
   internal StackBehaviour m_pop; 
   internal StackBehaviour m_push;
   internal OperandType m_operand; 
    internal OpCodeType m_type; 
   internal int m_size;
    internal byte m_s1; 
    internal byte m_s2;
   internal FlowControl m_ctrl;

    // Specifies whether the current instructions causes the control flow to 
   // change unconditionally.
   internal bool m_endsUncondJmpBlk; 
 

   // Specifies the stack change that the current instruction causes not 
    // taking into account the operand dependant stack changes.
   internal int m_stackChange;

    internal OpCode(String stringname, StackBehaviour pop, StackBehaviour push, OperandType operand, OpCodeType type, int size, byte s1, byte s2, FlowControl ctrl, bool endsjmpblk, int stack) 
    {
      m_stringname = stringname; 
       m_pop = pop; 
      m_push = push;
      m_operand = operand; 
      m_type = type;
       m_size = size;
      m_s1 = s1;
       m_s2 = s2; 
       m_ctrl = ctrl;
      m_endsUncondJmpBlk = endsjmpblk; 
       m_stackChange = stack; 

   } 

   internal bool EndsUncondJmpBlk()
   {
       return m_endsUncondJmpBlk; 
   }
 
    internal int StackChange() 
    {
      return m_stackChange; 
    }

   public OperandType OperandType
   { 
      get
       { 
         return (m_operand); 
       }
    } 

   public FlowControl FlowControl
    {
      get 
      {
         return (m_ctrl); 
       } 
   }
 
    public OpCodeType OpCodeType
    {
      get
       { 
         return (m_type);
      } 
   } 

 
    public StackBehaviour StackBehaviourPop
   {
       get
       { 
         return (m_pop);
       } 
   } 

   public StackBehaviour StackBehaviourPush 
   {
       get
      {
          return (m_push); 
       }
   } 
 
    public int Size
   { 
      get
      {
          return (m_size);
      } 
    }
 
    public short Value 
   {
       get 
      {
         if (m_size == 2)
            return (short) (m_s1 << 8 | m_s2);
          return (short) m_s2; 
      }
    } 
 

    public String Name 
   {
       get
      {
         return m_stringname; 
      }
    } 
 
    public override bool Equals(Object obj)
    { 
        if (obj is OpCode)
          return Equals((OpCode)obj);
        else
          return false; 
    }
 
    public bool Equals(OpCode obj) 
    {
        return obj.m_s1 == m_s1 && obj.m_s2 == m_s2; 
    }

    public static bool operator ==(OpCode a, OpCode b)
    { 
        return a.Equals(b);
    } 
 
    public static bool operator !=(OpCode a, OpCode b)
    { 
        return !(a == b);
    }

    public override int GetHashCode() 
    {
      return this.m_stringname.GetHashCode(); 
    } 

   public override String ToString() 
   {
      return m_stringname;
    }
 
}
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK