UNPKG

@marioslab/ulang-vm

Version:

Virtual machine & assembler for recreational programming like it's 1992.

141 lines (140 loc) 4.34 kB
export declare function loadUlang(): Promise<any>; export declare let getInt8: (ptr: number) => number; export declare let getInt16: (ptr: number) => number; export declare let getUint32: (ptr: number) => number; export declare let setUint32: (ptr: any, val: any) => void; export declare let getInt32: (ptr: number) => number; export declare let getFloat32: (ptr: number) => number; export declare let argbToRgba: (argb: number, rgba: number, numPixels: number) => void; export declare let addFunction: (func: any, descriptor: string) => number; export declare let UTF8ArrayToString: (heap: Uint8Array, ptr: number) => string; export declare let HEAPU8: () => Uint8Array; export declare function createWrappers(): void; export interface UlangString { ptr: number; data(): number; length(): number; toString(): string; } export declare function ptrToUlangString(stringPtr: number): UlangString; export interface UlangSpan { ptr: number; data(): UlangString; startLine(): number; endLine(): number; } export declare function ptrToUlangSpan(spanPtr: number): UlangSpan; export interface UlangLine { ptr: number; data(): UlangString; lineNumber(): number; } export declare function ptrToUlangLine(linePtr: number): UlangLine; export interface UlangFile { ptr: number; fileName(): UlangString; data(): UlangString; lines(): UlangLine[]; free(): void; } export declare function ptrToUlangFile(filePtr: number): UlangFile; export interface UlangError { ptr: number; file(): UlangFile; span(): UlangSpan; message(): UlangString; isSet(): boolean; print(): void; free(): void; } export declare function ptrToUlangError(errorPtr: number): UlangError; export declare enum UlangLabelTarget { UL_LT_UNINITIALIZED = 0, UL_LT_CODE = 1, UL_LT_DATA = 2, UL_LT_RESERVED_DATA = 3 } export interface UlangLabel { ptr: number; label(): UlangSpan; target(): UlangLabelTarget; address(): number; } export declare function ptrToUlangLabel(labelPtr: number): UlangLabel; export declare enum UlangValueType { UL_INTEGER = 0, UL_FLOAT = 1 } export interface UlangConstant { ptr: number; type(): UlangValueType; name(): UlangSpan; i(): number; f(): number; } export declare function ptrToUlangConstant(labelPtr: number): UlangConstant; export interface UlangProgram { ptr: number; code(): DataView; data(): DataView; reservedBytes(): number; labels(): UlangLabel[]; constants(): UlangConstant[]; file(): UlangFile; addressToLine(): number[]; free(): void; } export declare function ptrToUlangProgram(progPtr: number): UlangProgram; export interface UlangValue { ptr: number; b(): number; s(): number; i(): number; ui(): number; f(): number; } export declare function ptrToUlangValue(valPtr: any): UlangValue; export interface UlangVm { ptr: number; registers(): UlangValue[]; memory(): DataView; memoryPtr(): number; error(): UlangError; program(): UlangProgram; setSyscall(num: number, callPtr: number): void; step(): boolean; stepN(n: number): boolean; stepNBP(n: number, bpPtr: number, numBp: number): number; print(): void; popInt(): number; popUint(): number; popFloat(): number; pushInt(val: number): any; pushUint(val: number): any; pushFloat(val: number): any; free(): void; } export declare function ptrToUlangVm(vmPtr: number): UlangVm; declare enum UlangType { UL_TYPE_FILE = 0, UL_TYPE_ERROR = 1, UL_TYPE_PROGRAM = 2, UL_TYPE_VM = 3 } export declare function alloc(numBytes: number): number; export declare function allocType(type: UlangType): number; export declare function free(ptr: number): void; export declare function printMemory(): void; export declare function newFile(sourceName: string, sourceData: string): UlangFile; export declare function newError(): UlangError; export declare function newProgram(): UlangProgram; export interface UlangCompilationResult { error: UlangError; file: UlangFile; program: UlangProgram; free(): void; } export declare function compile(source: any): UlangCompilationResult; export declare function newVm(program: UlangProgram): UlangVm; export declare const UL_VM_MEMORY_SIZE: number; export {};