UNPKG

1.8 kBTypeScriptView Raw
1import { Option, RuntimeHeap, RuntimeProgram, RuntimeOp } from '@glimmer/interfaces';
2import VM from './append';
3import { MachineRegister } from '@glimmer/vm';
4export interface LowLevelRegisters {
5 [MachineRegister.pc]: number;
6 [MachineRegister.ra]: number;
7 [MachineRegister.sp]: number;
8 [MachineRegister.fp]: number;
9}
10export declare function initializeRegisters(): LowLevelRegisters;
11export declare function initializeRegistersWithSP(sp: number): LowLevelRegisters;
12export declare function initializeRegistersWithPC(pc: number): LowLevelRegisters;
13export interface Stack {
14 push(value: unknown): void;
15 get(position: number): number;
16 pop<T>(): T;
17}
18export interface Externs {
19 debugBefore(opcode: RuntimeOp): unknown;
20 debugAfter(state: unknown): void;
21}
22export default class LowLevelVM {
23 stack: Stack;
24 heap: RuntimeHeap;
25 program: RuntimeProgram;
26 externs: Externs;
27 readonly registers: LowLevelRegisters;
28 currentOpSize: number;
29 constructor(stack: Stack, heap: RuntimeHeap, program: RuntimeProgram, externs: Externs, registers: LowLevelRegisters);
30 fetchRegister(register: MachineRegister): number;
31 loadRegister(register: MachineRegister, value: number): void;
32 setPc(pc: number): void;
33 pushFrame(): void;
34 popFrame(): void;
35 pushSmallFrame(): void;
36 popSmallFrame(): void;
37 goto(offset: number): void;
38 target(offset: number): number;
39 call(handle: number): void;
40 returnTo(offset: number): void;
41 return(): void;
42 nextStatement(): Option<RuntimeOp>;
43 evaluateOuter(opcode: RuntimeOp, vm: VM): void;
44 evaluateInner(opcode: RuntimeOp, vm: VM): void;
45 evaluateMachine(opcode: RuntimeOp): void;
46 evaluateSyscall(opcode: RuntimeOp, vm: VM): void;
47}
48//# sourceMappingURL=low-level.d.ts.map
\No newline at end of file