slige/compiler/arch.ts
2024-11-18 10:42:11 +01:00

45 lines
744 B
TypeScript

import { Pos } from "./Token.ts";
export type Output = {
program: Program;
sourceMap: SourceMapping[];
};
export type Program = Ins[];
export type Ins = Ops | number;
export type SourceMapping = {
bytecodeOffset: number;
pos: Pos;
};
// NOTICE: keep up to date with runtime/arch.hpp
export type Ops = typeof Ops;
export const Ops = {
Nop: 0,
PushNull: 1,
PushInt: 2,
PushBool: 3,
PushString: 4,
PushPtr: 5,
Pop: 6,
LoadLocal: 7,
StoreLocal: 8,
Call: 9,
Return: 10,
Jump: 11,
JumpIfTrue: 12,
Add: 13,
Subtract: 14,
Multiply: 15,
Divide: 16,
Remainder: 17,
Equal: 18,
LessThan: 19,
And: 20,
Or: 21,
Xor: 22,
Not: 23,
} as const;