当前位置: 首页>>代码示例>>C#>>正文


C# OpCode类代码示例

本文整理汇总了C#中OpCode的典型用法代码示例。如果您正苦于以下问题:C# OpCode类的具体用法?C# OpCode怎么用?C# OpCode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


OpCode类属于命名空间,在下文中一共展示了OpCode类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BinaryOperation

 public BinaryOperation(string sOp, Expression x, Expression y)
 {
     operation = sOp;
     opcode = StringToOpCode(sOp);
     operand1 = x;
     operand2 = y;
 }
开发者ID:catb0t,项目名称:heron-language,代码行数:7,代码来源:HeronBinaryOperation.cs

示例2: Packet

 protected Packet( OpCode opCode )
 {
     if( !Enum.IsDefined( typeof( OpCode ), OpCode ) ) {
         throw new ArgumentOutOfRangeException( "opCode" );
     }
     OpCode = opCode;
 }
开发者ID:fragmer,项目名称:fBot,代码行数:7,代码来源:Packet.cs

示例3: OpCodes

        //wicky.patch.start
        static OpCodes()
        {
            //Start from first index to ignore nop (onebyte)
            for (int i = 1; i < OneByteOpCode.Length; i++)
            {
                //arglist: FE 00
                if (OneByteOpCode[i].Op2 == 0x00 && OneByteOpCode[i].Code != Code.Arglist)
                {
                    OneByteOpCode[i] = new OpCode(
                        0xff << 0 | (byte)i << 8 | (byte)Code.Unused << 16 | (byte)FlowControl.Next << 24,
                        (byte)OpCodeType.Primitive << 0 | (byte)OperandType.InlineNone << 8 | (byte)StackBehaviour.Pop0 << 16 | (byte)StackBehaviour.Push0 << 24);
                }
            }

            //Start from first index to ignore arglist (twobyte)
            for (int i = 1; i < TwoBytesOpCode.Length; i++)
            {
                //arglist: FE 00
                if (TwoBytesOpCode[i].Op2 == 0x00 && TwoBytesOpCode[i].Code != Code.Arglist)
                {
                    TwoBytesOpCode[i] = new OpCode(
                    0xfe << 0 | (byte)i << 8 | (byte)Code.Unused << 16 | (byte)FlowControl.Next << 24,
                    (byte)OpCodeType.Primitive << 0 | (byte)OperandType.InlineNone << 8 | (byte)StackBehaviour.Pop0 << 16 | (byte)StackBehaviour.Push0 << 24);
                }
            }

        }
开发者ID:adisik,项目名称:simple-assembly-explorer,代码行数:28,代码来源:OpCodes.cs

示例4: AddCodes

        public static void AddCodes(NodeBase caller, BlockBase parent, NodeBase target, OpModule codes, string op, Addr32 dest)
        {
            if (target is TypeOf) target = (target as TypeOf).Target;

            var v = target as Variant;
            if (v != null && parent.GetFunction(v.Name) == null)
            {
                var fpname = (target as Variant).Name;
                var fpt = Types.GetType(parent, fpname);
                if (fpt == null || !fpt.Check())
                    throw caller.Abort("undefined type: {0}", fpname);
                codes.AddCodesV(op, dest, codes.GetTypeObject(fpt));
                return;
            }

            var tt = target.Type;
            var tr = tt as TypeReference;
            var tts = tt.Type as TypeStruct;
            if (tr != null && (tr.IsArray || (tts != null && tts.IsClass)))
            {
                target.AddCodesV(codes, "mov", null);
                var label = new OpCode();
                codes.Add(I386.Test(Reg32.EAX, Reg32.EAX));
                codes.Add(I386.Jcc(Cc.Z, label.Address));
                codes.Add(I386.MovRA(Reg32.EAX, Addr32.NewRO(Reg32.EAX, -16)));
                codes.Add(label);
                codes.AddCodes(op, dest);
            }
            else
                codes.AddCodesV(op, dest, codes.GetTypeObject(tt));
        }
开发者ID:7shi,项目名称:LLPML,代码行数:31,代码来源:TypeOf.cs

示例5: WriteCodes

 public static void WriteCodes(BinaryWriter bw, OpCode[] ops)
 {
     for (int i = 0; i < ops.Length; i++)
     {
         bw.Write(ops[i].GetCodes());
     }
 }
开发者ID:7shi,项目名称:LLPML,代码行数:7,代码来源:Module.cs

示例6: Emit_UnknownOpCode_ThrowsNotSupportedException

        public void Emit_UnknownOpCode_ThrowsNotSupportedException()
        {
            var ilGenerator = new ILGenerator(null);
            var opCode = new OpCode(-1);

            ExceptionAssert.Throws<NotSupportedException>(() => ilGenerator.Emit(opCode));
        }
开发者ID:hendryten,项目名称:LightInject,代码行数:7,代码来源:OpCodeTests.cs

示例7: IsCall

 static bool IsCall(OpCode opCode)
 {
     return opCode == OpCodes.Call ||
            opCode == OpCodes.Callvirt ||
            opCode == OpCodes.Calli ||
            opCode == OpCodes.Ldftn;
 }
开发者ID:chantsunman,项目名称:PropertyChanged,代码行数:7,代码来源:RecursiveIlFinder.cs

示例8: StobjInstruction

 /// <summary>
 /// Initializes a new instance of the <see cref="StobjInstruction"/> class.
 /// </summary>
 /// <param name="opcode">The opcode.</param>
 public StobjInstruction(OpCode opcode)
     : base(opcode)
 {
     switch (opcode) {
         case OpCode.Stind_i1:
             _valueType = new SigType(CilElementType.I1);
             break;
         case OpCode.Stind_i2:
             _valueType = new SigType(CilElementType.I2);
             break;
         case OpCode.Stind_i4:
             _valueType = new SigType(CilElementType.I4);
             break;
         case OpCode.Stind_i8:
             _valueType = new SigType(CilElementType.I8);
             break;
         case OpCode.Stind_r4:
             _valueType = new SigType(CilElementType.R4);
             break;
         case OpCode.Stind_r8:
             _valueType = new SigType(CilElementType.R8);
             break;
         case OpCode.Stind_i:
             _valueType = new SigType(CilElementType.I);
             break;
         case OpCode.Stind_ref: // FIXME: Really object?
             _valueType = new SigType(CilElementType.Object);
             break;
         default:
             throw new NotImplementedException();
     }
 }
开发者ID:hj1980,项目名称:Mosa,代码行数:36,代码来源:StobjInstruction.cs

示例9: CompiledByte

 public CompiledByte(OpCode op, Value a, Value b)
 {
     ushort[] output = compile(op,a,b);
     for (int i = 0; i < output.Length; i++)
     {
         ;
     }
 }
开发者ID:Tipaa,项目名称:DCPU-ASM-IDE,代码行数:8,代码来源:MachineCode.cs

示例10: AssertOpCodeSequence

        static void AssertOpCodeSequence(OpCode [] expected, MethodBody body)
        {
            var opcodes = body.Instructions.Select (i => i.OpCode).ToArray ();
            Assert.AreEqual (expected.Length, opcodes.Length);

            for (int i = 0; i < opcodes.Length; i++)
                Assert.AreEqual (expected [i], opcodes [i]);
        }
开发者ID:ttRevan,项目名称:cecil,代码行数:8,代码来源:ILProcessorTests.cs

示例11: AddJumpBack

        private void AddJumpBack(OpCode jumpOp, string jumpLabel)
        {
            // pop the most recently-added jump with the label
            JumpPatch jump = mJumpBackPatches.Last(j => j.Label == jumpLabel);
            mJumpBackPatches.Remove(jump);

            mBytecode.Write(jumpOp, jump.Location);
        }
开发者ID:rwaldron,项目名称:magpie,代码行数:8,代码来源:JumpTable.cs

示例12: Instruction

 public Instruction(byte[] code, int offset, int length, OpCode oc, TokenResolver resolver)
 {
     this.code = code;
     this.offset = offset;
     this.length = length;
     this.oc = oc;
     this.resolver = resolver;
 }
开发者ID:chrisforbes,项目名称:reflect_ilc,代码行数:8,代码来源:Instruction.cs

示例13: Add

		public void Add(Token token, OpCode op, string stringValue, params int[] args)
		{
			List<int> nums = new List<int>(args);
			nums.Insert(0, (int)op);
			this.byteCode.Add(nums.ToArray());
			this.tokens.Add(token);
			this.stringArgs.Add(stringValue);
		}
开发者ID:geofrey,项目名称:crayon,代码行数:8,代码来源:ByteBuffer.cs

示例14: AddJump

        private void AddJump(OpCode jumpOp, string jumpLabel)
        {
            // add the jump and a blank space for the destination
            mBytecode.Write(jumpOp, 0);

            // patch the destination later
            mJumpPatches.Add(new JumpPatch(jumpLabel, mBytecode.Position - 4));
        }
开发者ID:rwaldron,项目名称:magpie,代码行数:8,代码来源:JumpTable.cs

示例15: Instruction

        public Instruction(OpCode opcode, int index, params Operand[] operands)
        {
            OpCode = opcode;

            Operands = operands;

            Index = index;
        }
开发者ID:jnsergio,项目名称:NPortugol,代码行数:8,代码来源:Instruction.cs


注:本文中的OpCode类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。