本文整理汇总了C#中Jurassic.Compiler.ILGenerator.Remainder方法的典型用法代码示例。如果您正苦于以下问题:C# ILGenerator.Remainder方法的具体用法?C# ILGenerator.Remainder怎么用?C# ILGenerator.Remainder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Jurassic.Compiler.ILGenerator
的用法示例。
在下文中一共展示了ILGenerator.Remainder方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateCode
//.........这里部分代码省略.........
// Load the right hand side onto the stack.
this.Right.GenerateCode(generator, optimizationInfo);
// Convert the right argument.
switch (this.OperatorType)
{
// Arithmetic operations.
case OperatorType.Subtract:
case OperatorType.Multiply:
case OperatorType.Divide:
case OperatorType.Modulo:
EmitConversion.ToNumber(generator, this.Right.ResultType);
break;
// Bitwise operations.
case OperatorType.BitwiseAnd:
case OperatorType.BitwiseOr:
case OperatorType.BitwiseXor:
EmitConversion.ToInt32(generator, this.Right.ResultType);
break;
case OperatorType.LeftShift:
case OperatorType.SignedRightShift:
case OperatorType.UnsignedRightShift:
EmitConversion.ToUInt32(generator, this.Right.ResultType);
generator.LoadInt32(0x1F);
generator.BitwiseAnd();
break;
// Equality operations.
case OperatorType.Equal:
case OperatorType.StrictlyEqual:
case OperatorType.NotEqual:
case OperatorType.StrictlyNotEqual:
EmitConversion.ToAny(generator, this.Right.ResultType);
break;
}
// Apply the operator.
switch (this.OperatorType)
{
// Arithmetic operations.
case OperatorType.Subtract:
generator.Subtract();
break;
case OperatorType.Multiply:
generator.Multiply();
break;
case OperatorType.Divide:
generator.Divide();
break;
case OperatorType.Modulo:
generator.Remainder();
break;
// Bitwise operations.
case OperatorType.BitwiseAnd:
generator.BitwiseAnd();
break;
case OperatorType.BitwiseOr:
generator.BitwiseOr();
break;
case OperatorType.BitwiseXor:
generator.BitwiseXor();
break;
// Shift operations.
case OperatorType.LeftShift:
generator.ShiftLeft();
break;
case OperatorType.SignedRightShift:
generator.ShiftRight();
break;
case OperatorType.UnsignedRightShift:
generator.ShiftRightUnsigned();
EmitConversion.ToNumber(generator, PrimitiveType.UInt32);
break;
// Equality operations.
case OperatorType.Equal:
generator.Call(ReflectionHelpers.TypeComparer_Equals);
break;
case OperatorType.StrictlyEqual:
generator.Call(ReflectionHelpers.TypeComparer_StrictEquals);
break;
case OperatorType.NotEqual:
generator.Call(ReflectionHelpers.TypeComparer_Equals);
generator.LoadBoolean(false);
generator.CompareEqual();
break;
case OperatorType.StrictlyNotEqual:
generator.Call(ReflectionHelpers.TypeComparer_StrictEquals);
generator.LoadBoolean(false);
generator.CompareEqual();
break;
default:
throw new NotImplementedException(string.Format("Unsupported operator {0}", this.OperatorType));
}
}