opcode.cs

来自「没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没」· CS 代码 · 共 172 行

CS
172
字号
/* * OpCode.cs - Implementation of the *			"System.Reflection.Emit.OpCode" class. * * Copyright (C) 2001  Southern Storm Software, Pty Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */namespace System.Reflection.Emit{#if CONFIG_REFLECTION_EMITpublic struct OpCode{	// Internal state.  Declared "internal" for faster	// access by other "Emit" classes.	internal byte   flowControl;	internal byte   opcodeType;	internal byte   operandType;	internal byte   size;	internal byte   stackPop;	internal byte   stackPush;	internal short  value;	internal String name;	// Construct a new opcode.	internal OpCode(String name, int value, FlowControl flowControl,					OpCodeType opcodeType, OperandType operandType,					StackBehaviour stackPop, StackBehaviour stackPush)			{				this.name = name;				this.value = (short)value;				this.flowControl = (byte)flowControl;				this.opcodeType = (byte)opcodeType;				this.operandType = (byte)operandType;				if(value < 0x0100)				{					this.size = (byte)1;				}				else				{					this.size = (byte)2;				}				this.stackPop = (byte)stackPop;				this.stackPush = (byte)stackPush;			}	// Determine if this opcode is identical to another.	public override bool Equals(Object obj)			{				if(obj is OpCode)				{					OpCode other = (OpCode)obj;					return (flowControl == other.flowControl &&							opcodeType  == other.opcodeType &&							operandType == other.operandType &&							size        == other.size &&							stackPop    == other.stackPop &&							stackPush   == other.stackPush &&							value       == other.value &&							name        == other.name);				}				else				{					return false;				}			}	// Get a hash code for this opcode.	public override int GetHashCode()			{				return value;			}	// Get the flow control for this opcode.	public FlowControl FlowControl			{				get				{					return (FlowControl)flowControl;				}			}	// Get the name for this opcode.	public String Name			{				get				{					return name;				}			}	// Get the opcode type for this opcode.	public OpCodeType OpCodeType			{				get				{					return (OpCodeType)opcodeType;				}			}	// Get the operand type for this opcode.	public OperandType OperandType			{				get				{					return (OperandType)operandType;				}			}	// Get the size of the opcode.	public int Size			{				get				{					return (int)size;				}			}	// Get the stack pop behaviour for this opcode.	public StackBehaviour StackBehaviourPop			{				get				{					return (StackBehaviour)stackPop;				}			}	// Get the stack push behaviour for this opcode.	public StackBehaviour StackBehaviourPush			{				get				{					return (StackBehaviour)stackPush;				}			}	// Get the value for this opcode.	public short Value			{				get				{					return value;				}			}	// Convert the opcode into a string.	public override String ToString()			{				return Name;			}}; // struct OpCode#endif // CONFIG_REFLECTION_EMIT}; // namespace System.Reflection.Emit

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?