Table of Contents

Class VmExecutionSession

Namespace
Pl0.Vm
Assembly
Pl0.Vm.dll
internal sealed class VmExecutionSession
Inheritance
VmExecutionSession
Inherited Members

Constructors

VmExecutionSession(Instruction[], IPl0Io, VirtualMachineOptions, ResourceManager, CultureInfo, CancellationToken)

private VmExecutionSession(Instruction[] program, IPl0Io io, VirtualMachineOptions options, ResourceManager messages, CultureInfo culture, CancellationToken initializationToken)

Parameters

program Instruction[]
io IPl0Io
options VirtualMachineOptions
messages ResourceManager
culture CultureInfo
initializationToken CancellationToken

Fields

AllowedOprCodes

private static readonly int[] AllowedOprCodes

Field Value

int[]

DivisionCode

private const int DivisionCode = 206

Field Value

int

InputEofCode

private const int InputEofCode = 98

Field Value

int

InputFormatCode

private const int InputFormatCode = 97

Field Value

int

RuntimeCode

private const int RuntimeCode = 99

Field Value

int

b

private int b

Field Value

int

culture

private readonly CultureInfo culture

Field Value

CultureInfo

diagnostics

private readonly List<VmDiagnostic> diagnostics

Field Value

List<VmDiagnostic>

executedInstructions

private int executedInstructions

Field Value

int

initializationToken

private readonly CancellationToken initializationToken

Field Value

CancellationToken

io

private readonly IPl0Io io

Field Value

IPl0Io

messages

private readonly ResourceManager messages

Field Value

ResourceManager

options

private readonly VirtualMachineOptions options

Field Value

VirtualMachineOptions

p

private int p

Field Value

int

program

private Instruction[] program

Field Value

Instruction[]

stack

private int[] stack

Field Value

int[]

t

private int t

Field Value

int

terminalResult

private VmStepResult? terminalResult

Field Value

VmStepResult

Properties

IsRunning

internal bool IsRunning { get; }

Property Value

bool

State

internal VmState State { get; private set; }

Property Value

VmState

Methods

Binary(Func<int, int, int>)

private VmCompletionReason? Binary(Func<int, int, int> operation)

Parameters

operation Func<int, int, int>

Returns

VmCompletionReason?

CaptureState()

private VmState CaptureState()

Returns

VmState

Complete(VmCompletionReason, IEnumerable<VmDiagnostic>, VmState)

private VmStepResult Complete(VmCompletionReason reason, IEnumerable<VmDiagnostic> source, VmState state)

Parameters

reason VmCompletionReason
source IEnumerable<VmDiagnostic>
state VmState

Returns

VmStepResult

Create(IReadOnlyList<Instruction>?, IPl0Io, VirtualMachineOptions, CancellationToken)

internal static VmExecutionSession Create(IReadOnlyList<Instruction>? source, IPl0Io io, VirtualMachineOptions options, CancellationToken cancellationToken)

Parameters

source IReadOnlyList<Instruction>
io IPl0Io
options VirtualMachineOptions
cancellationToken CancellationToken

Returns

VmExecutionSession

Dispatch(Instruction)

private VmCompletionReason? Dispatch(Instruction instruction)

Parameters

instruction Instruction

Returns

VmCompletionReason?

ExecuteNext(CancellationToken)

internal VmStepResult ExecuteNext(CancellationToken stepToken = default)

Parameters

stepToken CancellationToken

Returns

VmStepResult

ExecuteOpr(int)

private VmCompletionReason? ExecuteOpr(int code)

Parameters

code int

Returns

VmCompletionReason?

IsRecoverableHostException(Exception)

private static bool IsRecoverableHostException(Exception exception)

Parameters

exception Exception

Returns

bool

IsValidStackIndex(long)

private bool IsValidStackIndex(long index)

Parameters

index long

Returns

bool

LocalizedDiagnostic(int, string, string, string, params object[])

private VmDiagnostic LocalizedDiagnostic(int code, string resourceKey, string germanFallback, string englishFallback, params object[] arguments)

Parameters

code int
resourceKey string
germanFallback string
englishFallback string
arguments object[]

Returns

VmDiagnostic

ResolveBase(int)

private int ResolveBase(int level)

Parameters

level int

Returns

int

RuntimeFault(string, VmState)

private VmStepResult RuntimeFault(string detail, VmState state)

Parameters

detail string
state VmState

Returns

VmStepResult

RuntimeFaultReason(string)

private VmCompletionReason RuntimeFaultReason(string detail)

Parameters

detail string

Returns

VmCompletionReason

StackFault(string, string, string, params object[])

private VmCompletionReason StackFault(string resourceKey, string germanFallback, string englishFallback, params object[] arguments)

Parameters

resourceKey string
germanFallback string
englishFallback string
arguments object[]

Returns

VmCompletionReason

ToExecutionResult()

internal VmExecutionResult ToExecutionResult()

Returns

VmExecutionResult

TryPeek(int)

private bool TryPeek(int index)

Parameters

index int

Returns

bool

TryPush()

private bool TryPush()

Returns

bool

TryWrite(int)

private bool TryWrite(int value)

Parameters

value int

Returns

bool

ValidateProgram(IReadOnlyList<Instruction>?, VirtualMachineOptions, ResourceManager, CultureInfo)

private static IReadOnlyList<VmDiagnostic> ValidateProgram(IReadOnlyList<Instruction>? program, VirtualMachineOptions options, ResourceManager messages, CultureInfo culture)

Parameters

program IReadOnlyList<Instruction>
options VirtualMachineOptions
messages ResourceManager
culture CultureInfo

Returns

IReadOnlyList<VmDiagnostic>