• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# Emit.Label类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: EnsureLabel

 internal Label EnsureLabel(CodeGen cg) {
     if (!_initialized) {
         _label = cg.DefineLabel();
         _initialized = true;
     }
     return _label;
 }
开发者ID:JamesTryand,项目名称:IronScheme,代码行数:7,代码来源:YieldTarget.cs


示例2: RecordLabels

 public override void RecordLabels(ILGenerator gen)
 {
     base.RecordLabels(gen);
     returnLabel = gen.DefineLabel();
     returnLabels.Add(returnLabel);
     gosubIndex = returnLabels.Count - 1;
 }
开发者ID:michaelgwelch,项目名称:mbasic99,代码行数:7,代码来源:Gosub.cs


示例3: AppendGuard

		public override void AppendGuard(ILGenerator generator, 
			MethodInfo method, Label done)
		{
			generator.Emit(OpCodes.Ldloc_0);
			generator.Emit(OpCodes.Call, method);
			generator.Emit(OpCodes.Brfalse, done);
		}
开发者ID:radischevo,项目名称:Radischevo.Wahha,代码行数:7,代码来源:MessageFieldString.cs


示例4: ForState

 internal ForState(LocalBuilder indexVar, Label beginLabel, Label testLabel, object end)
 {
     this.indexVar = indexVar;
     this.beginLabel = beginLabel;
     this.testLabel = testLabel;
     this.end = end;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:7,代码来源:ForState.cs


示例5: ILForLoop

 public ILForLoop(Label conditionLabel, Label startLoopLogicLabel, LocalBuilder counter, LocalBuilder max)
 {
     ConditionLabel = conditionLabel;
     Counter = counter;
     Max = max;
     StartLoopLogicLabel = startLoopLogicLabel;
 }
开发者ID:dreasgrech,项目名称:yabfcompiler,代码行数:7,代码来源:ILForLoop.cs


示例6: WhileInfo

 public WhileInfo(string condition, Label beginLabel, Label comparasionLabel) :
     this()
 {
     Condition = condition;
     BeginLabel = beginLabel;
     ComparasionLabel = comparasionLabel;
 }
开发者ID:ElemarJR,项目名称:FluentIL,代码行数:7,代码来源:WhileInfo.cs


示例7: OnDefineLabel

 protected override Label OnDefineLabel()
 {
     var result = new Label();
     foreach (var ilEmitter in emittersField)
         result = ilEmitter.DefineLabel();
     return result;
 }
开发者ID:vendettamit,项目名称:FluentIL,代码行数:7,代码来源:EmittersAggregator.cs


示例8: GenerateForBranch

		public override void GenerateForBranch (ILGenerator gen, Label label, bool branchCase)
		{
			Label endLabel = gen.DefineLabel ();
			exp1.Generate (gen);
			
			if (exp1 is CodeConditionExpression) {
				if (branchCase)
					((CodeConditionExpression)exp1).GenerateForBranch (gen, endLabel, false);
				else
					((CodeConditionExpression)exp1).GenerateForBranch (gen, label, false);
			}
			else {
				exp1.Generate (gen);
				if (branchCase)
					gen.Emit (OpCodes.Brfalse, endLabel);
				else
					gen.Emit (OpCodes.Brfalse, label);
			}

			if (exp2 is CodeConditionExpression) {
				if (branchCase)
					((CodeConditionExpression)exp2).GenerateForBranch (gen, label, true);
				else
					((CodeConditionExpression)exp2).GenerateForBranch (gen, label, false);
			}
			else {
				exp2.Generate (gen);
				if (branchCase)
					gen.Emit (OpCodes.Brtrue, label);
				else
					gen.Emit (OpCodes.Brfalse, label);
			}
			
			gen.MarkLabel(endLabel);
		}
开发者ID:nlhepler,项目名称:mono,代码行数:35,代码来源:CodeAnd.cs


示例9: GenerateWriterMethod

		public void GenerateWriterMethod(Type obtype, CodeGenContext ctx, ILGenerator il)
		{
			var getTypeIDMethodInfo = typeof(Serializer).GetMethod("GetTypeID", BindingFlags.NonPublic | BindingFlags.Instance, null,
				new Type[] { typeof(object) }, null);

			var map = ctx.TypeMap;

			// arg0: Serializer, arg1: Stream, arg2: object

			var idLocal = il.DeclareLocal(typeof(ushort));

			// get TypeID from object's Type
			il.Emit(OpCodes.Ldarg_0);
			il.Emit(OpCodes.Ldarg_2);
			il.Emit(OpCodes.Call, getTypeIDMethodInfo);
			il.Emit(OpCodes.Stloc_S, idLocal);

			// write typeID
			il.Emit(OpCodes.Ldarg_1);
			il.Emit(OpCodes.Ldloc_S, idLocal);
			il.Emit(OpCodes.Call, ctx.GetWriterMethodInfo(typeof(ushort)));

			// +1 for 0 (null)
			var jumpTable = new Label[map.Count + 1];
			jumpTable[0] = il.DefineLabel();
			foreach (var kvp in map)
				jumpTable[kvp.Value.TypeID] = il.DefineLabel();

			il.Emit(OpCodes.Ldloc_S, idLocal);
			il.Emit(OpCodes.Switch, jumpTable);

			il.Emit(OpCodes.Newobj, Helpers.ExceptionCtorInfo);
			il.Emit(OpCodes.Throw);

			/* null case */
			il.MarkLabel(jumpTable[0]);
			il.Emit(OpCodes.Ret);

			/* cases for types */
			foreach (var kvp in map)
			{
				var type = kvp.Key;
				var data = kvp.Value;

				il.MarkLabel(jumpTable[data.TypeID]);

				if (data.NeedsInstanceParameter)
					il.Emit(OpCodes.Ldarg_0);

				il.Emit(OpCodes.Ldarg_1);
				il.Emit(OpCodes.Ldarg_2);
				il.Emit(type.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass, type);

				il.Emit(OpCodes.Tailcall);
				il.Emit(OpCodes.Call, data.WriterMethodInfo);

				il.Emit(OpCodes.Ret);
			}
		}
开发者ID:yashodhank,项目名称:QuasarRAT,代码行数:59,代码来源:ObjectSerializer.cs


示例10: Expand

        public override IEnumerable<NodeBase> Expand(Context ctx, NodeBase expression, Label nextStatement)
        {
            foreach (var rule in KeyRule.Expand(ctx, Expr.GetMember(expression, "Key"), nextStatement))
                yield return rule;

            foreach (var rule in ValueRule.Expand(ctx, Expr.GetMember(expression, "Value"), nextStatement))
                yield return rule;
        }
开发者ID:menozz,项目名称:lens,代码行数:8,代码来源:MatchKeyValueRule.cs


示例11: ExceptionalReturn

            public ExceptionalReturn(Label label, LocalBuilder local)
            {
                if (local == null)
                    throw new ArgumentNullException("local");

                Label = label;
                Local = local;
            }
开发者ID:pvginkel,项目名称:Jint2,代码行数:8,代码来源:CodeGenerator.Scope.cs


示例12: TestLabelEqualityOperators

        public void TestLabelEqualityOperators()
        {
            Label lb1 = new Label();
            Label lb2 = new Label();

            Assert.True(lb1 == lb2);
            Assert.False(lb1 != lb2);
        }
开发者ID:noahfalk,项目名称:corefx,代码行数:8,代码来源:LabelEquals1.cs


示例13: GenerateForBranch

 public virtual void GenerateForBranch(ILGenerator gen, Label label, bool jumpCase)
 {
     Generate (gen);
     if (jumpCase)
         gen.Emit (OpCodes.Brtrue, label);
     else
         gen.Emit (OpCodes.Brfalse, label);
 }
开发者ID:yudhitech,项目名称:xamarin-android,代码行数:8,代码来源:CodeExpression.cs


示例14: EmitBranchFalse

 public override void EmitBranchFalse(CodeGen cg, Label label) {
     if (_valueIndex == _expressions.Count - 1) {
         Emit(cg, _valueIndex);
         _expressions[_valueIndex].EmitBranchFalse(cg, label);
     } else {
         base.EmitBranchFalse(cg, label);
     }
 }
开发者ID:JamesTryand,项目名称:IronScheme,代码行数:8,代码来源:CommaExpression.cs


示例15: Expand

 public override IEnumerable<NodeBase> Expand(Context ctx, NodeBase expression, Label nextStatement)
 {
     yield return Expr.If(
         Expr.NotEqual(Literal as NodeBase, expression),
         Expr.Block(
             Expr.JumpTo(nextStatement)
         )
     );
 }
开发者ID:menozz,项目名称:lens,代码行数:9,代码来源:MatchLiteralRule.cs


示例16: GenerateCondition

		void GenerateCondition (ILGenerator gen, Label falseLabel)
		{
			if (condition is CodeConditionExpression)
				((CodeConditionExpression)condition).GenerateForBranch (gen, falseLabel, false);
			else {
				condition.Generate (gen);
				gen.Emit (OpCodes.Brfalse, falseLabel);
			}
		}
开发者ID:nickchal,项目名称:pash,代码行数:9,代码来源:CodeWhen.cs


示例17: MarkLabel

		public DynamicMethodBody MarkLabel(Label label)
		{
#if DEBUG
			Console.WriteLine("IL_{0}:", label.GetHashCode());
#endif
			Emitter.MarkLabel(label);

			return this;
		}
开发者ID:mwoelk83,项目名称:FluentIL,代码行数:9,代码来源:DynamicMethodBody.Labels.cs


示例18: GenerateForBranch

		public override void GenerateForBranch (ILGenerator gen, Label label, bool branchCase)
		{
			exp1.Generate (gen);
			exp2.Generate (gen);
			if (branchCase)
				gen.Emit (OpCodes.Bgt, label);
			else
				gen.Emit (OpCodes.Ble, label);
		}
开发者ID:nickchal,项目名称:pash,代码行数:9,代码来源:CodeBinaryComparison.cs


示例19: EmitBranch

		internal virtual void EmitBranch(CodeGen g, BranchSet branchSet, Label label)
		{
			if (g == null)
				throw new ArgumentNullException("g");
			if (branchSet == null)
				throw new ArgumentNullException("branchSet");

			EmitGet(g);
			g.IL.Emit(branchSet.brTrue, label);
		}
开发者ID:jimmmeh,项目名称:runsharp,代码行数:10,代码来源:Operand.cs


示例20: PosTest1

        public void PosTest1()
        {
            Label label1 = new Label();
            Label label2 = new Label();
            int la1hash = label1.GetHashCode();
            int la2hash = label2.GetHashCode();
            Assert.Equal(la1hash, 0);

            Assert.Equal(la1hash, la2hash);
        }
开发者ID:Rayislandstyle,项目名称:corefx,代码行数:10,代码来源:LabelGetHashCode.cs



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Emit.LocalBuilder类代码示例发布时间:2022-05-26
下一篇:
C# Emit.ILGenerator类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap