Unverified Commit 8e8e610f authored by Tomáš Rohlínek's avatar Tomáš Rohlínek
Browse files

Add types for v2

parent 4e93aa7f
Loading
Loading
Loading
Loading

types.ts

0 → 100644
+75 −0
Original line number Diff line number Diff line
type RegisterName = "rv" | "t0" | "l0";

interface Register {
    type: "register";

    register: RegisterName;
    size: number;
}

interface Memory {
    type: "memory";
    start: number;
    size: number;
}

type Location = Register | Memory;

interface Primitive {
    type: "primitive";
    location: Location;
    type_name: string;
    value: number;
}

interface Compound {
    type: "compound";
    location: Location;
    type_name: string;
    children: [key: string | number] : Object;
}

interface Pointer {
    type: "pointer";
    location: Location;
    type_name: string;

    target: Memory;
}

type Object = Primitive | Compound | Pointer;

interface Frame {
    bindings: [key: string] : Object;

    location: Memory;

    name: string;
}

interface SourceLocation {
    start: number;
    end: number;
}

interface Step {
    id: number;

    asm: SourceLocation;
    c: SourceLocation;

    frames: Frame[];

    registers: number[];
    memory: Uint8Array;
}

interface WeakStep {
    id: number;
    description: number;
}

interface State {
    steps: WeakStep;
}