本文整理汇总了C#中VirtualMachine.SetPendingAnnotation方法的典型用法代码示例。如果您正苦于以下问题:C# VirtualMachine.SetPendingAnnotation方法的具体用法?C# VirtualMachine.SetPendingAnnotation怎么用?C# VirtualMachine.SetPendingAnnotation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VirtualMachine
的用法示例。
在下文中一共展示了VirtualMachine.SetPendingAnnotation方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
Value.Emit(into, OperationDestination.Stack);
(LHS as IAssignable).EmitAssignment(into);
}
示例2: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
into.AddInstructions("ALLOC_RSO NEXT PUSH", ResultType.Size);
into.AddInstructions("STORE_RSO_M NEXT PEEK NEXT", ResultType.ID, 0); //Store type id
if (Constructor != null)
{
if (Constructor.OwnerContextID == Scope.EnvironmentContext.ID && Constructor.OwnerContextID != 0)
{
into.AddInstructions("CALL NEXT #" + Constructor.DescriptiveHeader, 0);
Constructor.Body.CallPoints.Add(into.Count - 1);
}
else
{
into.AddInstructions("STACK_INVOKE NEXT", Constructor.MakeInvokableFunction());
}
}
if (Initializers != null)
{
foreach (var initializer in Initializers)
initializer.Emit(into, OperationDestination.Discard);
}
if (Destination != OperationDestination.Stack)
into.AddInstructions("MOVE POP " + WriteOperand(Destination));
}
示例3: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
//Assumes the RSO is on the top of the stack.
Value.Emit(into, OperationDestination.R);
into.AddInstructions("STORE_RSO_M R PEEK NEXT", Member.Offset);
}
示例4: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
foreach (var n in Parameters)
n.Emit(into, OperationDestination.Stack);
into.AddInstructions("COMPAT_INVOKE NEXT", Parameters.Count);
if (Destination != OperationDestination.R && Destination != OperationDestination.Discard)
into.AddInstructions("MOVE R " + Node.WriteOperand(Destination));
}
示例5: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
foreach (var arg in Arguments)
arg.Emit(into, OperationDestination.Stack);
into.AddInstructions("STACK_INVOKE NEXT", Function.MakeInvokableFunction());
if (Arguments.Count > 0) into.AddInstructions("CLEANUP NEXT", Arguments.Count);
if (Destination != OperationDestination.R && Destination != OperationDestination.Discard)
into.AddInstructions("MOVE R " + Node.WriteOperand(Destination));
}
示例6: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
if (Value != null)
Value.Emit(into, OperationDestination.R);
else
into.AddInstructions("MOVE NEXT R", 0);
into.AddInstructions("JUMP NEXT", 0);
DeclarationScope.RecordReturnJumpSource(into.Count - 1);
}
示例7: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
if (Value != null)
{
Value.Emit(into, OperationDestination.Stack);
}
else
{
into.AddInstructions("MOVE NEXT PUSH", 0); //Just make room on the stack for it...
}
}
示例8: Emit
public override void Emit(VirtualMachine.InstructionList into, OperationDestination Destination)
{
into.SetPendingAnnotation(this.ToString());
Header.Emit(into, OperationDestination.R);
into.AddInstructions("IF_FALSE R", "JUMP NEXT", 0);
var jumpFrom = into.Count - 1;
ThenBlock.Emit(into, OperationDestination.Discard);
if (ElseBlock != null)
{
into.AddInstructions("JUMP NEXT", 0);
into[jumpFrom] = into.Count;
jumpFrom = into.Count - 1;
ElseBlock.Emit(into, OperationDestination.Discard);
}
into[jumpFrom] = into.Count;
}