| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 | 
							- //
 
- // Author:
 
- //   Jb Evain (jbevain@gmail.com)
 
- //
 
- // Copyright (c) 2008 - 2015 Jb Evain
 
- // Copyright (c) 2008 - 2011 Novell, Inc.
 
- //
 
- // Licensed under the MIT/X11 license.
 
- //
 
- using System;
 
- namespace ILRuntime.Mono.Cecil.Cil {
 
- 	public enum FlowControl {
 
- 		Branch,
 
- 		Break,
 
- 		Call,
 
- 		Cond_Branch,
 
- 		Meta,
 
- 		Next,
 
- 		Phi,
 
- 		Return,
 
- 		Throw,
 
- 	}
 
- 	public enum OpCodeType {
 
- 		Annotation,
 
- 		Macro,
 
- 		Nternal,
 
- 		Objmodel,
 
- 		Prefix,
 
- 		Primitive,
 
- 	}
 
- 	public enum OperandType {
 
- 		InlineBrTarget,
 
- 		InlineField,
 
- 		InlineI,
 
- 		InlineI8,
 
- 		InlineMethod,
 
- 		InlineNone,
 
- 		InlinePhi,
 
- 		InlineR,
 
- 		InlineSig,
 
- 		InlineString,
 
- 		InlineSwitch,
 
- 		InlineTok,
 
- 		InlineType,
 
- 		InlineVar,
 
- 		InlineArg,
 
- 		ShortInlineBrTarget,
 
- 		ShortInlineI,
 
- 		ShortInlineR,
 
- 		ShortInlineVar,
 
- 		ShortInlineArg,
 
- 	}
 
- 	public enum StackBehaviour {
 
- 		Pop0,
 
- 		Pop1,
 
- 		Pop1_pop1,
 
- 		Popi,
 
- 		Popi_pop1,
 
- 		Popi_popi,
 
- 		Popi_popi8,
 
- 		Popi_popi_popi,
 
- 		Popi_popr4,
 
- 		Popi_popr8,
 
- 		Popref,
 
- 		Popref_pop1,
 
- 		Popref_popi,
 
- 		Popref_popi_popi,
 
- 		Popref_popi_popi8,
 
- 		Popref_popi_popr4,
 
- 		Popref_popi_popr8,
 
- 		Popref_popi_popref,
 
- 		PopAll,
 
- 		Push0,
 
- 		Push1,
 
- 		Push1_push1,
 
- 		Pushi,
 
- 		Pushi8,
 
- 		Pushr4,
 
- 		Pushr8,
 
- 		Pushref,
 
- 		Varpop,
 
- 		Varpush,
 
- 	}
 
- 	public struct OpCode : IEquatable<OpCode> {
 
- 		readonly byte op1;
 
- 		readonly byte op2;
 
- 		readonly byte code;
 
- 		readonly byte flow_control;
 
- 		readonly byte opcode_type;
 
- 		readonly byte operand_type;
 
- 		readonly byte stack_behavior_pop;
 
- 		readonly byte stack_behavior_push;
 
- 		public string Name {
 
- 			get { return OpCodeNames.names [(int) Code]; }
 
- 		}
 
- 		public int Size {
 
- 			get { return op1 == 0xff ? 1 : 2; }
 
- 		}
 
- 		public byte Op1 {
 
- 			get { return op1; }
 
- 		}
 
- 		public byte Op2 {
 
- 			get { return op2; }
 
- 		}
 
- 		public short Value {
 
- 			get { return op1 == 0xff ? op2 : (short) ((op1 << 8) | op2); }
 
- 		}
 
- 		public Code Code {
 
- 			get { return (Code) code; }
 
- 		}
 
- 		public FlowControl FlowControl {
 
- 			get { return (FlowControl) flow_control; }
 
- 		}
 
- 		public OpCodeType OpCodeType {
 
- 			get { return (OpCodeType) opcode_type; }
 
- 		}
 
- 		public OperandType OperandType {
 
- 			get { return (OperandType) operand_type; }
 
- 		}
 
- 		public StackBehaviour StackBehaviourPop {
 
- 			get { return (StackBehaviour) stack_behavior_pop; }
 
- 		}
 
- 		public StackBehaviour StackBehaviourPush {
 
- 			get { return (StackBehaviour) stack_behavior_push; }
 
- 		}
 
- 		internal OpCode (int x, int y)
 
- 		{
 
- 			this.op1 = (byte) ((x >> 0) & 0xff);
 
- 			this.op2 = (byte) ((x >> 8) & 0xff);
 
- 			this.code = (byte) ((x >> 16) & 0xff);
 
- 			this.flow_control = (byte) ((x >> 24) & 0xff);
 
- 			this.opcode_type = (byte) ((y >> 0) & 0xff);
 
- 			this.operand_type = (byte) ((y >> 8) & 0xff);
 
- 			this.stack_behavior_pop = (byte) ((y >> 16) & 0xff);
 
- 			this.stack_behavior_push = (byte) ((y >> 24) & 0xff);
 
- 			if (op1 == 0xff)
 
- 				OpCodes.OneByteOpCode [op2] = this;
 
- 			else
 
- 				OpCodes.TwoBytesOpCode [op2] = this;
 
- 		}
 
- 		public override int GetHashCode ()
 
- 		{
 
- 			return Value;
 
- 		}
 
- 		public override bool Equals (object obj)
 
- 		{
 
- 			if (!(obj is OpCode))
 
- 				return false;
 
- 			var opcode = (OpCode) obj;
 
- 			return op1 == opcode.op1 && op2 == opcode.op2;
 
- 		}
 
- 		public bool Equals (OpCode opcode)
 
- 		{
 
- 			return op1 == opcode.op1 && op2 == opcode.op2;
 
- 		}
 
- 		public static bool operator == (OpCode one, OpCode other)
 
- 		{
 
- 			return one.op1 == other.op1 && one.op2 == other.op2;
 
- 		}
 
- 		public static bool operator != (OpCode one, OpCode other)
 
- 		{
 
- 			return one.op1 != other.op1 || one.op2 != other.op2;
 
- 		}
 
- 		public override string ToString ()
 
- 		{
 
- 			return Name;
 
- 		}
 
- 	}
 
- 	static class OpCodeNames {
 
- 		internal static readonly string [] names;
 
- 		static OpCodeNames ()
 
- 		{
 
- 			var table = new byte [] {
 
- 				3, 110, 111, 112,
 
- 				5, 98, 114, 101, 97, 107,
 
- 				7, 108, 100, 97, 114, 103, 46, 48,
 
- 				7, 108, 100, 97, 114, 103, 46, 49,
 
- 				7, 108, 100, 97, 114, 103, 46, 50,
 
- 				7, 108, 100, 97, 114, 103, 46, 51,
 
- 				7, 108, 100, 108, 111, 99, 46, 48,
 
- 				7, 108, 100, 108, 111, 99, 46, 49,
 
- 				7, 108, 100, 108, 111, 99, 46, 50,
 
- 				7, 108, 100, 108, 111, 99, 46, 51,
 
- 				7, 115, 116, 108, 111, 99, 46, 48,
 
- 				7, 115, 116, 108, 111, 99, 46, 49,
 
- 				7, 115, 116, 108, 111, 99, 46, 50,
 
- 				7, 115, 116, 108, 111, 99, 46, 51,
 
- 				7, 108, 100, 97, 114, 103, 46, 115,
 
- 				8, 108, 100, 97, 114, 103, 97, 46, 115,
 
- 				7, 115, 116, 97, 114, 103, 46, 115,
 
- 				7, 108, 100, 108, 111, 99, 46, 115,
 
- 				8, 108, 100, 108, 111, 99, 97, 46, 115,
 
- 				7, 115, 116, 108, 111, 99, 46, 115,
 
- 				6, 108, 100, 110, 117, 108, 108,
 
- 				9, 108, 100, 99, 46, 105, 52, 46, 109, 49,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 48,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 49,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 50,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 51,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 52,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 53,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 54,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 55,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 56,
 
- 				8, 108, 100, 99, 46, 105, 52, 46, 115,
 
- 				6, 108, 100, 99, 46, 105, 52,
 
- 				6, 108, 100, 99, 46, 105, 56,
 
- 				6, 108, 100, 99, 46, 114, 52,
 
- 				6, 108, 100, 99, 46, 114, 56,
 
- 				3, 100, 117, 112,
 
- 				3, 112, 111, 112,
 
- 				3, 106, 109, 112,
 
- 				4, 99, 97, 108, 108,
 
- 				5, 99, 97, 108, 108, 105,
 
- 				3, 114, 101, 116,
 
- 				4, 98, 114, 46, 115,
 
- 				9, 98, 114, 102, 97, 108, 115, 101, 46, 115,
 
- 				8, 98, 114, 116, 114, 117, 101, 46, 115,
 
- 				5, 98, 101, 113, 46, 115,
 
- 				5, 98, 103, 101, 46, 115,
 
- 				5, 98, 103, 116, 46, 115,
 
- 				5, 98, 108, 101, 46, 115,
 
- 				5, 98, 108, 116, 46, 115,
 
- 				8, 98, 110, 101, 46, 117, 110, 46, 115,
 
- 				8, 98, 103, 101, 46, 117, 110, 46, 115,
 
- 				8, 98, 103, 116, 46, 117, 110, 46, 115,
 
- 				8, 98, 108, 101, 46, 117, 110, 46, 115,
 
- 				8, 98, 108, 116, 46, 117, 110, 46, 115,
 
- 				2, 98, 114,
 
- 				7, 98, 114, 102, 97, 108, 115, 101,
 
- 				6, 98, 114, 116, 114, 117, 101,
 
- 				3, 98, 101, 113,
 
- 				3, 98, 103, 101,
 
- 				3, 98, 103, 116,
 
- 				3, 98, 108, 101,
 
- 				3, 98, 108, 116,
 
- 				6, 98, 110, 101, 46, 117, 110,
 
- 				6, 98, 103, 101, 46, 117, 110,
 
- 				6, 98, 103, 116, 46, 117, 110,
 
- 				6, 98, 108, 101, 46, 117, 110,
 
- 				6, 98, 108, 116, 46, 117, 110,
 
- 				6, 115, 119, 105, 116, 99, 104,
 
- 				8, 108, 100, 105, 110, 100, 46, 105, 49,
 
- 				8, 108, 100, 105, 110, 100, 46, 117, 49,
 
- 				8, 108, 100, 105, 110, 100, 46, 105, 50,
 
- 				8, 108, 100, 105, 110, 100, 46, 117, 50,
 
- 				8, 108, 100, 105, 110, 100, 46, 105, 52,
 
- 				8, 108, 100, 105, 110, 100, 46, 117, 52,
 
- 				8, 108, 100, 105, 110, 100, 46, 105, 56,
 
- 				7, 108, 100, 105, 110, 100, 46, 105,
 
- 				8, 108, 100, 105, 110, 100, 46, 114, 52,
 
- 				8, 108, 100, 105, 110, 100, 46, 114, 56,
 
- 				9, 108, 100, 105, 110, 100, 46, 114, 101, 102,
 
- 				9, 115, 116, 105, 110, 100, 46, 114, 101, 102,
 
- 				8, 115, 116, 105, 110, 100, 46, 105, 49,
 
- 				8, 115, 116, 105, 110, 100, 46, 105, 50,
 
- 				8, 115, 116, 105, 110, 100, 46, 105, 52,
 
- 				8, 115, 116, 105, 110, 100, 46, 105, 56,
 
- 				8, 115, 116, 105, 110, 100, 46, 114, 52,
 
- 				8, 115, 116, 105, 110, 100, 46, 114, 56,
 
- 				3, 97, 100, 100,
 
- 				3, 115, 117, 98,
 
- 				3, 109, 117, 108,
 
- 				3, 100, 105, 118,
 
- 				6, 100, 105, 118, 46, 117, 110,
 
- 				3, 114, 101, 109,
 
- 				6, 114, 101, 109, 46, 117, 110,
 
- 				3, 97, 110, 100,
 
- 				2, 111, 114,
 
- 				3, 120, 111, 114,
 
- 				3, 115, 104, 108,
 
- 				3, 115, 104, 114,
 
- 				6, 115, 104, 114, 46, 117, 110,
 
- 				3, 110, 101, 103,
 
- 				3, 110, 111, 116,
 
- 				7, 99, 111, 110, 118, 46, 105, 49,
 
- 				7, 99, 111, 110, 118, 46, 105, 50,
 
- 				7, 99, 111, 110, 118, 46, 105, 52,
 
- 				7, 99, 111, 110, 118, 46, 105, 56,
 
- 				7, 99, 111, 110, 118, 46, 114, 52,
 
- 				7, 99, 111, 110, 118, 46, 114, 56,
 
- 				7, 99, 111, 110, 118, 46, 117, 52,
 
- 				7, 99, 111, 110, 118, 46, 117, 56,
 
- 				8, 99, 97, 108, 108, 118, 105, 114, 116,
 
- 				5, 99, 112, 111, 98, 106,
 
- 				5, 108, 100, 111, 98, 106,
 
- 				5, 108, 100, 115, 116, 114,
 
- 				6, 110, 101, 119, 111, 98, 106,
 
- 				9, 99, 97, 115, 116, 99, 108, 97, 115, 115,
 
- 				6, 105, 115, 105, 110, 115, 116,
 
- 				9, 99, 111, 110, 118, 46, 114, 46, 117, 110,
 
- 				5, 117, 110, 98, 111, 120,
 
- 				5, 116, 104, 114, 111, 119,
 
- 				5, 108, 100, 102, 108, 100,
 
- 				6, 108, 100, 102, 108, 100, 97,
 
- 				5, 115, 116, 102, 108, 100,
 
- 				6, 108, 100, 115, 102, 108, 100,
 
- 				7, 108, 100, 115, 102, 108, 100, 97,
 
- 				6, 115, 116, 115, 102, 108, 100,
 
- 				5, 115, 116, 111, 98, 106,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 49, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 50, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 52, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 56, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 49, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 50, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 52, 46, 117, 110,
 
- 				14, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 56, 46, 117, 110,
 
- 				13, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 46, 117, 110,
 
- 				13, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 46, 117, 110,
 
- 				3, 98, 111, 120,
 
- 				6, 110, 101, 119, 97, 114, 114,
 
- 				5, 108, 100, 108, 101, 110,
 
- 				7, 108, 100, 101, 108, 101, 109, 97,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 105, 49,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 117, 49,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 105, 50,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 117, 50,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 105, 52,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 117, 52,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 105, 56,
 
- 				8, 108, 100, 101, 108, 101, 109, 46, 105,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 114, 52,
 
- 				9, 108, 100, 101, 108, 101, 109, 46, 114, 56,
 
- 				10, 108, 100, 101, 108, 101, 109, 46, 114, 101, 102,
 
- 				8, 115, 116, 101, 108, 101, 109, 46, 105,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 105, 49,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 105, 50,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 105, 52,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 105, 56,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 114, 52,
 
- 				9, 115, 116, 101, 108, 101, 109, 46, 114, 56,
 
- 				10, 115, 116, 101, 108, 101, 109, 46, 114, 101, 102,
 
- 				10, 108, 100, 101, 108, 101, 109, 46, 97, 110, 121,
 
- 				10, 115, 116, 101, 108, 101, 109, 46, 97, 110, 121,
 
- 				9, 117, 110, 98, 111, 120, 46, 97, 110, 121,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 49,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 49,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 50,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 50,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 52,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 52,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105, 56,
 
- 				11, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117, 56,
 
- 				9, 114, 101, 102, 97, 110, 121, 118, 97, 108,
 
- 				8, 99, 107, 102, 105, 110, 105, 116, 101,
 
- 				8, 109, 107, 114, 101, 102, 97, 110, 121,
 
- 				7, 108, 100, 116, 111, 107, 101, 110,
 
- 				7, 99, 111, 110, 118, 46, 117, 50,
 
- 				7, 99, 111, 110, 118, 46, 117, 49,
 
- 				6, 99, 111, 110, 118, 46, 105,
 
- 				10, 99, 111, 110, 118, 46, 111, 118, 102, 46, 105,
 
- 				10, 99, 111, 110, 118, 46, 111, 118, 102, 46, 117,
 
- 				7, 97, 100, 100, 46, 111, 118, 102,
 
- 				10, 97, 100, 100, 46, 111, 118, 102, 46, 117, 110,
 
- 				7, 109, 117, 108, 46, 111, 118, 102,
 
- 				10, 109, 117, 108, 46, 111, 118, 102, 46, 117, 110,
 
- 				7, 115, 117, 98, 46, 111, 118, 102,
 
- 				10, 115, 117, 98, 46, 111, 118, 102, 46, 117, 110,
 
- 				10, 101, 110, 100, 102, 105, 110, 97, 108, 108, 121,
 
- 				5, 108, 101, 97, 118, 101,
 
- 				7, 108, 101, 97, 118, 101, 46, 115,
 
- 				7, 115, 116, 105, 110, 100, 46, 105,
 
- 				6, 99, 111, 110, 118, 46, 117,
 
- 				7, 97, 114, 103, 108, 105, 115, 116,
 
- 				3, 99, 101, 113,
 
- 				3, 99, 103, 116,
 
- 				6, 99, 103, 116, 46, 117, 110,
 
- 				3, 99, 108, 116,
 
- 				6, 99, 108, 116, 46, 117, 110,
 
- 				5, 108, 100, 102, 116, 110,
 
- 				9, 108, 100, 118, 105, 114, 116, 102, 116, 110,
 
- 				5, 108, 100, 97, 114, 103,
 
- 				6, 108, 100, 97, 114, 103, 97,
 
- 				5, 115, 116, 97, 114, 103,
 
- 				5, 108, 100, 108, 111, 99,
 
- 				6, 108, 100, 108, 111, 99, 97,
 
- 				5, 115, 116, 108, 111, 99,
 
- 				8, 108, 111, 99, 97, 108, 108, 111, 99,
 
- 				9, 101, 110, 100, 102, 105, 108, 116, 101, 114,
 
- 				10, 117, 110, 97, 108, 105, 103, 110, 101, 100, 46,
 
- 				9, 118, 111, 108, 97, 116, 105, 108, 101, 46,
 
- 				5, 116, 97, 105, 108, 46,
 
- 				7, 105, 110, 105, 116, 111, 98, 106,
 
- 				12, 99, 111, 110, 115, 116, 114, 97, 105, 110, 101, 100, 46,
 
- 				5, 99, 112, 98, 108, 107,
 
- 				7, 105, 110, 105, 116, 98, 108, 107,
 
- 				3, 110, 111, 46,
 
- 				7, 114, 101, 116, 104, 114, 111, 119,
 
- 				6, 115, 105, 122, 101, 111, 102,
 
- 				10, 114, 101, 102, 97, 110, 121, 116, 121, 112, 101,
 
- 				9, 114, 101, 97, 100, 111, 110, 108, 121, 46,
 
- 			};
 
- 			names = new string [219];
 
- 			for (int i = 0, p = 0; i < names.Length; i++) {
 
- 				var buffer = new char [table [p++]];
 
- 				for (int j = 0; j < buffer.Length; j++)
 
- 					buffer [j] = (char) table [p++];
 
- 				names [i] = new string (buffer);
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |