UNPKG

689 BTypeScriptView Raw
1import { MachineOp, Op } from '../vm-opcodes';
2import { Operand } from './operands';
3import { CompilerBuffer } from '../template';
4
5export const enum OpcodeSize {
6 ARG_SHIFT = 8,
7 MAX_SIZE = 0x7fffffff,
8 TYPE_SIZE = 0b11111111,
9 TYPE_MASK = 0b00000000000000000000000011111111,
10 OPERAND_LEN_MASK = 0b00000000000000000000001100000000,
11 MACHINE_MASK = 0b00000000000000000000010000000000,
12}
13
14export interface InstructionEncoder {
15 size: number;
16 readonly buffer: CompilerBuffer;
17
18 encode(type: MachineOp, machine: OpcodeSize.MACHINE_MASK, ...operands: Operand[]): void;
19 encode(type: Op, machine: 0, ...operands: Operand[]): void;
20
21 patch(position: number, target: number): void;
22}