@specy/x86 1.1.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -151
- package/dist/assets/assemblers/fasm.1.73.32.elf +0 -0
- package/dist/assets/assemblers/gnu-as.2.43.50.elf +0 -0
- package/dist/assets/assemblers/gnu-ld.2.43.50.elf +0 -0
- package/dist/assets/assemblers/nasm.3.00.elf +0 -0
- package/dist/index.d.mts +566 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1541 -0
- package/dist/index.mjs.map +1 -0
- package/dist/wasm/blinkenlib.d.ts +3 -0
- package/dist/wasm/blinkenlib.js +2 -0
- package/package.json +27 -35
- package/LICENSE +0 -339
- package/dist/index.d.ts +0 -1558
- package/dist/index.js +0 -223
- package/dist/instructions.js +0 -1343
- package/dist/test.js +0 -10
- package/dist/utils.js +0 -5
- package/dist/x86/deps/capstone-x86.min.js +0 -1
- package/dist/x86/deps/keystone-x86.min.js +0 -1
- package/dist/x86/deps/unicorn-x86.min.js +0 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
//#region src/resources.d.ts
|
|
2
|
+
type ResourceSource = string | URL | ArrayBuffer | Uint8Array;
|
|
3
|
+
declare function isNodeRuntime(): boolean;
|
|
4
|
+
declare function toResourceUrl(source: string | URL): URL;
|
|
5
|
+
declare function readResourceBytes(source: ResourceSource): Promise<Uint8Array>;
|
|
6
|
+
declare function defaultResourceUrl(relativePath: string, baseUrl: string): URL;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/assemblers.d.ts
|
|
9
|
+
interface Binary {
|
|
10
|
+
file: ResourceSource;
|
|
11
|
+
commands: string;
|
|
12
|
+
}
|
|
13
|
+
interface DiagnosticLine {
|
|
14
|
+
line: number;
|
|
15
|
+
error: string;
|
|
16
|
+
}
|
|
17
|
+
type DiagnosticsParser = (assemblerLogs: string) => DiagnosticLine[];
|
|
18
|
+
interface AssemblerMode {
|
|
19
|
+
id: string;
|
|
20
|
+
displayName: string;
|
|
21
|
+
description: string;
|
|
22
|
+
diagnosticsParser?: DiagnosticsParser;
|
|
23
|
+
binaries: {
|
|
24
|
+
assembler: Binary;
|
|
25
|
+
linker?: Binary;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
declare const assemblers: {
|
|
29
|
+
GNU_trunk: {
|
|
30
|
+
id: string;
|
|
31
|
+
displayName: string;
|
|
32
|
+
description: string;
|
|
33
|
+
diagnosticsParser: typeof gnuDiagnostics;
|
|
34
|
+
binaries: {
|
|
35
|
+
assembler: {
|
|
36
|
+
file: URL;
|
|
37
|
+
commands: string;
|
|
38
|
+
};
|
|
39
|
+
linker: {
|
|
40
|
+
file: URL;
|
|
41
|
+
commands: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
FASM_trunk: {
|
|
46
|
+
id: string;
|
|
47
|
+
displayName: string;
|
|
48
|
+
description: string;
|
|
49
|
+
diagnosticsParser: typeof fasmDiagnostics;
|
|
50
|
+
binaries: {
|
|
51
|
+
assembler: {
|
|
52
|
+
file: URL;
|
|
53
|
+
commands: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
NASM_trunk: {
|
|
58
|
+
id: string;
|
|
59
|
+
displayName: string;
|
|
60
|
+
description: string;
|
|
61
|
+
diagnosticsParser: typeof nasmDiagnostics;
|
|
62
|
+
binaries: {
|
|
63
|
+
assembler: {
|
|
64
|
+
file: URL;
|
|
65
|
+
commands: string;
|
|
66
|
+
};
|
|
67
|
+
linker: {
|
|
68
|
+
file: URL;
|
|
69
|
+
commands: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
type AssemblerId = keyof typeof assemblers;
|
|
75
|
+
declare const DEFAULT_ASSEMBLER_ID: AssemblerId;
|
|
76
|
+
declare function nasmDiagnostics(str: string): DiagnosticLine[];
|
|
77
|
+
declare function gnuDiagnostics(str: string): DiagnosticLine[];
|
|
78
|
+
declare function fasmDiagnostics(str: string): DiagnosticLine[];
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/callbacks.d.ts
|
|
81
|
+
type MaybePromise<T> = T | PromiseLike<T>;
|
|
82
|
+
declare function observeCallbackResult(result: MaybePromise<void>): void;
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/types.d.ts
|
|
85
|
+
declare const X86_REGISTER_NAMES: readonly ["rax", "rbx", "rcx", "rdx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "rip"];
|
|
86
|
+
type X86RegisterName = (typeof X86_REGISTER_NAMES)[number];
|
|
87
|
+
declare enum BlinkState {
|
|
88
|
+
NotReady = "NOT_READY",
|
|
89
|
+
Ready = "READY",
|
|
90
|
+
Assembling = "ASSEMBLING",
|
|
91
|
+
Linking = "LINKING",
|
|
92
|
+
ProgramLoaded = "PROGRAM_LOADED",
|
|
93
|
+
ProgramRunning = "PROGRAM_RUNNING",
|
|
94
|
+
ProgramPaused = "PROGRAM_PAUSED",
|
|
95
|
+
ProgramReadlinePause = "PROGRAM_READLINE_PAUSE",
|
|
96
|
+
ProgramStopped = "PROGRAM_STOPPED"
|
|
97
|
+
}
|
|
98
|
+
type StopReasonKind = 'exit' | 'signal' | 'input' | 'limit' | 'breakpoint' | 'load-fail';
|
|
99
|
+
type StopReason = {
|
|
100
|
+
loadFail: boolean;
|
|
101
|
+
exitCode: number;
|
|
102
|
+
details: string;
|
|
103
|
+
kind?: StopReasonKind;
|
|
104
|
+
address?: bigint;
|
|
105
|
+
lineNumber?: number;
|
|
106
|
+
executedInstructions?: bigint;
|
|
107
|
+
};
|
|
108
|
+
type X86CompilationDiagnostic = {
|
|
109
|
+
line: number;
|
|
110
|
+
error: string;
|
|
111
|
+
};
|
|
112
|
+
type X86CompileResult = {
|
|
113
|
+
ok: true;
|
|
114
|
+
report: string;
|
|
115
|
+
} | {
|
|
116
|
+
ok: false;
|
|
117
|
+
errors: X86CompilationDiagnostic[];
|
|
118
|
+
report: string;
|
|
119
|
+
};
|
|
120
|
+
type X86EmulatorEventMap = {
|
|
121
|
+
stateChange: {
|
|
122
|
+
state: BlinkState;
|
|
123
|
+
oldState: BlinkState;
|
|
124
|
+
};
|
|
125
|
+
stdout: number;
|
|
126
|
+
stderr: number;
|
|
127
|
+
signal: {
|
|
128
|
+
signal: number;
|
|
129
|
+
code: number;
|
|
130
|
+
};
|
|
131
|
+
inputRequest: {
|
|
132
|
+
maxBytes: bigint;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
type X86EmulatorEventName = keyof X86EmulatorEventMap;
|
|
136
|
+
type X86EmulatorEventHandler<T extends X86EmulatorEventName> = (event: X86EmulatorEventMap[T]) => MaybePromise<void>;
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/wasm-types.d.ts
|
|
139
|
+
type EmscriptenFS = {
|
|
140
|
+
init(stdin: () => number | null, stdout: (charCode: number) => void, stderr: (charCode: number) => void): void;
|
|
141
|
+
writeFile(path: string, data: string | Uint8Array): void;
|
|
142
|
+
open(path: string, flags: string): unknown;
|
|
143
|
+
write(stream: unknown, data: Uint8Array, offset: number, length: number, position: number): void;
|
|
144
|
+
close(stream: unknown): void;
|
|
145
|
+
chmod(path: string, mode: number): void;
|
|
146
|
+
readFile(path: string, options?: {
|
|
147
|
+
encoding?: 'binary' | 'utf8';
|
|
148
|
+
}): Uint8Array | string;
|
|
149
|
+
};
|
|
150
|
+
type BlinkenlibModuleOptions = {
|
|
151
|
+
noInitialRun?: boolean;
|
|
152
|
+
preRun?: (module: BlinkenlibModule) => void;
|
|
153
|
+
instantiateWasm?: (imports: WebAssembly.Imports, receiveInstance: (instance: WebAssembly.Instance, module?: WebAssembly.Module) => void) => void;
|
|
154
|
+
};
|
|
155
|
+
type RegisterSnapshot = {
|
|
156
|
+
registers: Record<X86RegisterName, bigint>;
|
|
157
|
+
rip: bigint;
|
|
158
|
+
rsp: bigint;
|
|
159
|
+
pc: bigint;
|
|
160
|
+
flags: number;
|
|
161
|
+
};
|
|
162
|
+
type MemoryReadResult = {
|
|
163
|
+
ok: true;
|
|
164
|
+
bytes: number[];
|
|
165
|
+
} | {
|
|
166
|
+
ok: false;
|
|
167
|
+
error: string;
|
|
168
|
+
readBytes: number;
|
|
169
|
+
};
|
|
170
|
+
type MemoryWriteResult = {
|
|
171
|
+
ok: true;
|
|
172
|
+
writtenBytes: number;
|
|
173
|
+
} | {
|
|
174
|
+
ok: false;
|
|
175
|
+
error: string;
|
|
176
|
+
writtenBytes: number;
|
|
177
|
+
};
|
|
178
|
+
type NativeRunStopKind = 'none' | 'breakpoint' | 'limit';
|
|
179
|
+
type NativeRunStop = {
|
|
180
|
+
kind: NativeRunStopKind;
|
|
181
|
+
address: bigint;
|
|
182
|
+
executedInstructions: bigint;
|
|
183
|
+
};
|
|
184
|
+
type NativeRunControls = {
|
|
185
|
+
breakpoints: bigint[];
|
|
186
|
+
};
|
|
187
|
+
type NativeControlFlowKind = 'none' | 'call' | 'return';
|
|
188
|
+
type NativeMemoryWrite = {
|
|
189
|
+
address: bigint;
|
|
190
|
+
size: number;
|
|
191
|
+
old: number[];
|
|
192
|
+
truncated: boolean;
|
|
193
|
+
};
|
|
194
|
+
type NativeStepInfo = {
|
|
195
|
+
valid: false;
|
|
196
|
+
memoryWrites: NativeMemoryWrite[];
|
|
197
|
+
} | {
|
|
198
|
+
valid: true;
|
|
199
|
+
pcBefore: bigint;
|
|
200
|
+
pcAfter: bigint;
|
|
201
|
+
spBefore: bigint;
|
|
202
|
+
spAfter: bigint;
|
|
203
|
+
flagsBefore: number;
|
|
204
|
+
flagsAfter: number;
|
|
205
|
+
controlFlow: NativeControlFlowKind;
|
|
206
|
+
truncatedMemoryWrites: boolean;
|
|
207
|
+
memoryWrites: NativeMemoryWrite[];
|
|
208
|
+
};
|
|
209
|
+
type NativeSymbol = {
|
|
210
|
+
address: bigint;
|
|
211
|
+
name: string;
|
|
212
|
+
};
|
|
213
|
+
type NativeInstruction = {
|
|
214
|
+
address: bigint;
|
|
215
|
+
size: number;
|
|
216
|
+
code: string;
|
|
217
|
+
};
|
|
218
|
+
type DisassemblySnapshot = {
|
|
219
|
+
lines: string[];
|
|
220
|
+
currentLine: number;
|
|
221
|
+
};
|
|
222
|
+
type BlinkenlibModule = {
|
|
223
|
+
FS: EmscriptenFS;
|
|
224
|
+
callMain(args: string[]): void;
|
|
225
|
+
addFunction(fn: (...args: never[]) => void, signature: string): number;
|
|
226
|
+
_blinkenlib_run_fast(): void;
|
|
227
|
+
_blinkenlib_run(): void;
|
|
228
|
+
_blinkenlib_start(): void;
|
|
229
|
+
_blinkenlib_starti(): void;
|
|
230
|
+
_blinkenlib_stepi(): void;
|
|
231
|
+
_blinkenlib_continue(): void;
|
|
232
|
+
_blinkenlib_preempt_resume(): void;
|
|
233
|
+
_blinkenlib_faketty_resume(): void;
|
|
234
|
+
blinkenlibGetRegister(register: X86RegisterName): bigint;
|
|
235
|
+
blinkenlibSetRegister(register: X86RegisterName, value: bigint): boolean;
|
|
236
|
+
blinkenlibSetFlags(flags: number): void;
|
|
237
|
+
blinkenlibSetStepRecording(enabled: boolean): void;
|
|
238
|
+
blinkenlibGetRegisterSnapshot(): RegisterSnapshot;
|
|
239
|
+
blinkenlibReadMemoryBytes(address: bigint, length: number): MemoryReadResult;
|
|
240
|
+
blinkenlibWriteMemoryBytes(address: bigint, bytes: Uint8Array | number[]): MemoryWriteResult;
|
|
241
|
+
blinkenlibGetDisassembly(): DisassemblySnapshot;
|
|
242
|
+
blinkenlibSetEmulationArgs(progname: string, argc: string, argv: string): void;
|
|
243
|
+
blinkenlibGetInputMaxBytes(): bigint;
|
|
244
|
+
blinkenlibSetRunControls(limit: bigint, breakpointAddresses: string[]): void;
|
|
245
|
+
blinkenlibGetRunControls(): NativeRunControls;
|
|
246
|
+
blinkenlibGetRunStop(): NativeRunStop;
|
|
247
|
+
blinkenlibGetLastStepInfo(): NativeStepInfo;
|
|
248
|
+
blinkenlibGetInstructionAt(address: bigint): NativeInstruction | null;
|
|
249
|
+
blinkenlibResolveSymbol(address: bigint): NativeSymbol | null;
|
|
250
|
+
};
|
|
251
|
+
//#endregion
|
|
252
|
+
//#region src/blink-runtime.d.ts
|
|
253
|
+
type BlinkRuntimeCallbacks = {
|
|
254
|
+
stdin?: () => number | null;
|
|
255
|
+
stdout?: (charCode: number) => MaybePromise<void>;
|
|
256
|
+
stderr?: (charCode: number) => MaybePromise<void>;
|
|
257
|
+
signal?: (signal: number, code: number) => MaybePromise<void>;
|
|
258
|
+
stateChange?: (state: BlinkState, oldState: BlinkState) => MaybePromise<void>;
|
|
259
|
+
inputRequest?: (event: {
|
|
260
|
+
maxBytes: bigint;
|
|
261
|
+
}) => MaybePromise<void>;
|
|
262
|
+
};
|
|
263
|
+
type BlinkRuntimeOptions = {
|
|
264
|
+
mode?: AssemblerMode | AssemblerId;
|
|
265
|
+
callbacks?: BlinkRuntimeCallbacks;
|
|
266
|
+
scheduler?: (callback: () => void) => void;
|
|
267
|
+
};
|
|
268
|
+
type BlinkRunOptions = {
|
|
269
|
+
limit?: number;
|
|
270
|
+
breakpointAddresses?: bigint[];
|
|
271
|
+
};
|
|
272
|
+
declare class BlinkRuntime {
|
|
273
|
+
readonly module: BlinkenlibModule;
|
|
274
|
+
mode: AssemblerMode;
|
|
275
|
+
state: BlinkState;
|
|
276
|
+
stopReason: StopReason | null;
|
|
277
|
+
assemblerLogs: string;
|
|
278
|
+
assemblerErrors: Array<{
|
|
279
|
+
line: number;
|
|
280
|
+
error: string;
|
|
281
|
+
}>;
|
|
282
|
+
private readonly callbacks;
|
|
283
|
+
private readonly scheduler;
|
|
284
|
+
private readonly stateWaiters;
|
|
285
|
+
private readonly stdinBytes;
|
|
286
|
+
private sourceMap;
|
|
287
|
+
private readonly defaultArgc;
|
|
288
|
+
private readonly defaultArgv;
|
|
289
|
+
private constructor();
|
|
290
|
+
static create(options?: BlinkRuntimeOptions): Promise<BlinkRuntime>;
|
|
291
|
+
setMode(mode: AssemblerMode | AssemblerId): Promise<void>;
|
|
292
|
+
compileAssembly(code: string): Promise<X86CompileResult>;
|
|
293
|
+
loadElf(data: ArrayBuffer | Uint8Array): void;
|
|
294
|
+
starti(): void;
|
|
295
|
+
run(): void;
|
|
296
|
+
step(): void;
|
|
297
|
+
continue(): void;
|
|
298
|
+
runUntilBlocked(options?: BlinkRunOptions): Promise<BlinkState>;
|
|
299
|
+
provideInput(line: string): void;
|
|
300
|
+
readMemoryBytes(address: bigint, length: bigint): Uint8Array;
|
|
301
|
+
writeMemoryBytes(address: bigint, data: Uint8Array): void;
|
|
302
|
+
getDisassemblyLines(): string[];
|
|
303
|
+
getDisassemblyCurrentLine(): number;
|
|
304
|
+
getRegisterSnapshot(): RegisterSnapshot;
|
|
305
|
+
getRegister(register: keyof RegisterSnapshot['registers']): bigint;
|
|
306
|
+
setRegister(register: keyof RegisterSnapshot['registers'], value: bigint): void;
|
|
307
|
+
setFlags(flags: bigint | number): void;
|
|
308
|
+
setStepRecording(enabled: boolean): void;
|
|
309
|
+
getPc(): bigint;
|
|
310
|
+
getSp(): bigint;
|
|
311
|
+
getFlags(): bigint;
|
|
312
|
+
getInputMaxBytes(): bigint;
|
|
313
|
+
getInstructionAt(address: bigint): NativeInstruction | null;
|
|
314
|
+
getLastStepInfo(): NativeStepInfo;
|
|
315
|
+
resolveSymbol(address: bigint): NativeSymbol | null;
|
|
316
|
+
getSourceLineForAddress(address: bigint): number | null;
|
|
317
|
+
getAddressesForSourceLine(lineIndex: number): bigint[];
|
|
318
|
+
pauseForBreakpoint(address: bigint, lineNumber: number | undefined): void;
|
|
319
|
+
pauseForLimit(address: bigint, executedInstructions: bigint): void;
|
|
320
|
+
resumeAfterStateMutation(): void;
|
|
321
|
+
private startProgram;
|
|
322
|
+
private writeExecutable;
|
|
323
|
+
private writeExecutableSync;
|
|
324
|
+
private setEmulationArgs;
|
|
325
|
+
private configureRunControls;
|
|
326
|
+
private collectAssemblerLog;
|
|
327
|
+
private handleSignal;
|
|
328
|
+
private handleExit;
|
|
329
|
+
private handleAssemblerExit;
|
|
330
|
+
private handleLinkerExit;
|
|
331
|
+
private setState;
|
|
332
|
+
private waitForState;
|
|
333
|
+
private resolveStateWaiters;
|
|
334
|
+
private assertReadyForCompile;
|
|
335
|
+
private getDisassemblySnapshot;
|
|
336
|
+
private tryReadSourceMap;
|
|
337
|
+
}
|
|
338
|
+
//#endregion
|
|
339
|
+
//#region src/interface.d.ts
|
|
340
|
+
type StatusRegister = {
|
|
341
|
+
name: string;
|
|
342
|
+
value: number;
|
|
343
|
+
prev: number;
|
|
344
|
+
};
|
|
345
|
+
type MonacoError = {
|
|
346
|
+
lineIndex: number;
|
|
347
|
+
column: number;
|
|
348
|
+
line: {
|
|
349
|
+
line: string;
|
|
350
|
+
line_index: number;
|
|
351
|
+
};
|
|
352
|
+
message: string;
|
|
353
|
+
formatted: string;
|
|
354
|
+
};
|
|
355
|
+
type StackFrame = {
|
|
356
|
+
name: string;
|
|
357
|
+
address: bigint;
|
|
358
|
+
destination: bigint;
|
|
359
|
+
sp: bigint;
|
|
360
|
+
line: number;
|
|
361
|
+
color: string;
|
|
362
|
+
};
|
|
363
|
+
type RegisterHex = [hi: string, lo: string];
|
|
364
|
+
declare enum RegisterSize {
|
|
365
|
+
Byte = 1,
|
|
366
|
+
Word = 2,
|
|
367
|
+
Long = 4,
|
|
368
|
+
Double = 8
|
|
369
|
+
}
|
|
370
|
+
type ExecutionStep = {
|
|
371
|
+
mutations: MutationOperation[];
|
|
372
|
+
pc: number;
|
|
373
|
+
old_ccr: {
|
|
374
|
+
bits: number;
|
|
375
|
+
};
|
|
376
|
+
new_ccr: {
|
|
377
|
+
bits: number;
|
|
378
|
+
};
|
|
379
|
+
line: number;
|
|
380
|
+
};
|
|
381
|
+
type MutationOperation = {
|
|
382
|
+
type: 'WriteRegister';
|
|
383
|
+
value: {
|
|
384
|
+
register: string;
|
|
385
|
+
old: bigint;
|
|
386
|
+
size: RegisterSize;
|
|
387
|
+
};
|
|
388
|
+
} | {
|
|
389
|
+
type: 'WriteMemory';
|
|
390
|
+
value: {
|
|
391
|
+
address: bigint;
|
|
392
|
+
old: bigint;
|
|
393
|
+
size: RegisterSize;
|
|
394
|
+
};
|
|
395
|
+
} | {
|
|
396
|
+
type: 'WriteMemoryBytes';
|
|
397
|
+
value: {
|
|
398
|
+
address: bigint;
|
|
399
|
+
old: number[];
|
|
400
|
+
};
|
|
401
|
+
} | {
|
|
402
|
+
type: 'PopCallStack';
|
|
403
|
+
value: {
|
|
404
|
+
to: bigint;
|
|
405
|
+
from: bigint;
|
|
406
|
+
};
|
|
407
|
+
} | {
|
|
408
|
+
type: 'PushCallStack';
|
|
409
|
+
value: {
|
|
410
|
+
to: bigint;
|
|
411
|
+
from: bigint;
|
|
412
|
+
};
|
|
413
|
+
} | {
|
|
414
|
+
type: 'Other';
|
|
415
|
+
value: string;
|
|
416
|
+
};
|
|
417
|
+
type EmulatorDecoration = {
|
|
418
|
+
type: 'below-line';
|
|
419
|
+
note?: string;
|
|
420
|
+
belowLine: number;
|
|
421
|
+
md: string;
|
|
422
|
+
};
|
|
423
|
+
type CompilationError = {
|
|
424
|
+
type: 'raw';
|
|
425
|
+
message: string;
|
|
426
|
+
};
|
|
427
|
+
declare enum EmulatorStatus {
|
|
428
|
+
Terminated = 0,
|
|
429
|
+
Running = 1,
|
|
430
|
+
WaitingForInput = 2,
|
|
431
|
+
NotReady = 3
|
|
432
|
+
}
|
|
433
|
+
type Instruction = {
|
|
434
|
+
address: bigint;
|
|
435
|
+
lineNumber: number;
|
|
436
|
+
code: string;
|
|
437
|
+
};
|
|
438
|
+
type EmulatorConfig<R extends string> = {
|
|
439
|
+
systemSize: RegisterSize;
|
|
440
|
+
registerNames: R[];
|
|
441
|
+
endianness?: 'little' | 'big';
|
|
442
|
+
hiddenRegisters?: R[];
|
|
443
|
+
};
|
|
444
|
+
declare abstract class BaseEmulator<T, R extends string, CompileResult = {
|
|
445
|
+
ok: true;
|
|
446
|
+
} | {
|
|
447
|
+
ok: false;
|
|
448
|
+
errors: CompilationError[];
|
|
449
|
+
report: string;
|
|
450
|
+
}> {
|
|
451
|
+
protected _registerNames: R[];
|
|
452
|
+
protected _systemSize: RegisterSize;
|
|
453
|
+
protected _endianness: 'little' | 'big';
|
|
454
|
+
constructor(options: EmulatorConfig<R>);
|
|
455
|
+
getSystemSize(): RegisterSize;
|
|
456
|
+
getEndianness(): 'little' | 'big';
|
|
457
|
+
getRegisterNames(): R[];
|
|
458
|
+
abstract initialize(undoSize: number): void;
|
|
459
|
+
abstract getCompiledCode(): {
|
|
460
|
+
decorations: EmulatorDecoration[];
|
|
461
|
+
code: string;
|
|
462
|
+
};
|
|
463
|
+
abstract dispose(): void;
|
|
464
|
+
abstract stringifyError(error: unknown): string;
|
|
465
|
+
abstract compile(code: string): Promise<CompileResult>;
|
|
466
|
+
abstract checkCode(code: string): Promise<MonacoError[]>;
|
|
467
|
+
abstract undo(): void;
|
|
468
|
+
abstract canUndo(): boolean;
|
|
469
|
+
abstract step(): Promise<{
|
|
470
|
+
terminated: boolean;
|
|
471
|
+
}>;
|
|
472
|
+
abstract getStatus(): EmulatorStatus;
|
|
473
|
+
abstract writeMemoryBytes(address: bigint, data: Uint8Array): void;
|
|
474
|
+
abstract readMemoryBytes(address: bigint, length: bigint): Uint8Array;
|
|
475
|
+
abstract getNextInstruction(): Instruction | null;
|
|
476
|
+
abstract getUndoHistory(max: number): ExecutionStep[];
|
|
477
|
+
abstract getPc(): bigint;
|
|
478
|
+
abstract getSp(): bigint;
|
|
479
|
+
abstract getFlags(): {
|
|
480
|
+
name: string;
|
|
481
|
+
value: number;
|
|
482
|
+
prev?: number;
|
|
483
|
+
}[];
|
|
484
|
+
abstract getCallStack(): StackFrame[];
|
|
485
|
+
abstract getInstructionAt(address: bigint): Instruction | null;
|
|
486
|
+
abstract getRegisterValues(): bigint[];
|
|
487
|
+
abstract getRegisterValuesRecord(): Record<R, bigint>;
|
|
488
|
+
abstract getRegisterValue(register: R, size?: RegisterSize): bigint;
|
|
489
|
+
abstract setRegisterValue(register: R, value: bigint, size?: RegisterSize): void;
|
|
490
|
+
abstract hasTerminated(): boolean;
|
|
491
|
+
abstract run(limit?: number, breakpoints?: number[]): Promise<EmulatorStatus>;
|
|
492
|
+
}
|
|
493
|
+
//#endregion
|
|
494
|
+
//#region src/x86-emulator.d.ts
|
|
495
|
+
type X86EmulatorOptions = Omit<BlinkRuntimeOptions, 'callbacks' | 'mode'> & {
|
|
496
|
+
mode?: AssemblerMode | AssemblerId;
|
|
497
|
+
callbacks?: BlinkRuntimeCallbacks;
|
|
498
|
+
};
|
|
499
|
+
declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X86CompileResult> {
|
|
500
|
+
readonly runtime: BlinkRuntime;
|
|
501
|
+
private readonly eventHandlers;
|
|
502
|
+
private lastCompileResult;
|
|
503
|
+
private lastSourceCode;
|
|
504
|
+
private history;
|
|
505
|
+
private callStack;
|
|
506
|
+
private constructor();
|
|
507
|
+
static create(options?: X86EmulatorOptions): Promise<X86Emulator>;
|
|
508
|
+
get module(): BlinkenlibModule;
|
|
509
|
+
get state(): BlinkState;
|
|
510
|
+
get stopReason(): StopReason | null;
|
|
511
|
+
on<T extends X86EmulatorEventName>(eventName: T, handler: X86EmulatorEventHandler<T>): () => void;
|
|
512
|
+
setMode(mode: AssemblerMode | AssemblerId): Promise<void>;
|
|
513
|
+
compile(code: string): Promise<X86CompileResult>;
|
|
514
|
+
loadElf(data: ArrayBuffer | Uint8Array): void;
|
|
515
|
+
runUntilBlocked(): Promise<EmulatorStatus>;
|
|
516
|
+
provideInput(line: string): void;
|
|
517
|
+
initialize(undoSize: number): void;
|
|
518
|
+
getCompiledCode(): {
|
|
519
|
+
decorations: EmulatorDecoration[];
|
|
520
|
+
code: string;
|
|
521
|
+
};
|
|
522
|
+
dispose(): void;
|
|
523
|
+
stringifyError(error: unknown): string;
|
|
524
|
+
checkCode(code: string): Promise<MonacoError[]>;
|
|
525
|
+
undo(): void;
|
|
526
|
+
canUndo(): boolean;
|
|
527
|
+
step(): Promise<{
|
|
528
|
+
terminated: boolean;
|
|
529
|
+
}>;
|
|
530
|
+
getStatus(): EmulatorStatus;
|
|
531
|
+
writeMemoryBytes(address: bigint, data: Uint8Array): void;
|
|
532
|
+
readMemoryBytes(address: bigint, length: bigint): Uint8Array;
|
|
533
|
+
getNextInstruction(): Instruction | null;
|
|
534
|
+
getUndoHistory(max: number): ExecutionStep[];
|
|
535
|
+
getPc(): bigint;
|
|
536
|
+
getSp(): bigint;
|
|
537
|
+
getFlags(): {
|
|
538
|
+
name: string;
|
|
539
|
+
value: number;
|
|
540
|
+
prev?: number;
|
|
541
|
+
}[];
|
|
542
|
+
getCallStack(): StackFrame[];
|
|
543
|
+
getInstructionAt(address: bigint): Instruction | null;
|
|
544
|
+
getRegisterValues(): bigint[];
|
|
545
|
+
getRegisterValuesRecord(): Record<X86RegisterName, bigint>;
|
|
546
|
+
getRegisterValue(register: X86RegisterName, size?: RegisterSize): bigint;
|
|
547
|
+
setRegisterValue(register: X86RegisterName, value: bigint, size?: RegisterSize): void;
|
|
548
|
+
hasTerminated(): boolean;
|
|
549
|
+
run(limit?: number, breakpoints?: number[]): Promise<EmulatorStatus>;
|
|
550
|
+
private validateRunLimit;
|
|
551
|
+
private resolveBreakpointAddresses;
|
|
552
|
+
private runWithBreakpoints;
|
|
553
|
+
private runWithHistory;
|
|
554
|
+
private isTracingEnabled;
|
|
555
|
+
private clearExecutionTrace;
|
|
556
|
+
private prepareOneInstructionRun;
|
|
557
|
+
private captureStep;
|
|
558
|
+
private recordStep;
|
|
559
|
+
private recordMemoryMutations;
|
|
560
|
+
private recordControlFlowMutation;
|
|
561
|
+
private emit;
|
|
562
|
+
}
|
|
563
|
+
declare function createX86Emulator(options?: X86EmulatorOptions): Promise<X86Emulator>;
|
|
564
|
+
//#endregion
|
|
565
|
+
export { AssemblerId, AssemblerMode, BaseEmulator, Binary, BlinkRunOptions, BlinkRuntime, BlinkRuntimeCallbacks, BlinkRuntimeOptions, BlinkState, BlinkenlibModule, BlinkenlibModuleOptions, CompilationError, DEFAULT_ASSEMBLER_ID, DiagnosticLine, DiagnosticsParser, DisassemblySnapshot, EmscriptenFS, EmulatorConfig, EmulatorDecoration, EmulatorStatus, ExecutionStep, Instruction, MaybePromise, MemoryReadResult, MemoryWriteResult, MonacoError, MutationOperation, NativeControlFlowKind, NativeInstruction, NativeMemoryWrite, NativeRunControls, NativeRunStop, NativeRunStopKind, NativeStepInfo, NativeSymbol, RegisterHex, RegisterSize, RegisterSnapshot, ResourceSource, StackFrame, StatusRegister, StopReason, StopReasonKind, X86CompilationDiagnostic, X86CompileResult, X86Emulator, X86EmulatorEventHandler, X86EmulatorEventMap, X86EmulatorEventName, X86EmulatorOptions, X86RegisterName, X86_REGISTER_NAMES, assemblers, createX86Emulator, defaultResourceUrl, fasmDiagnostics, gnuDiagnostics, isNodeRuntime, nasmDiagnostics, observeCallbackResult, readResourceBytes, toResourceUrl };
|
|
566
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/resources.ts","../src/assemblers.ts","../src/callbacks.ts","../src/types.ts","../src/wasm-types.ts","../src/blink-runtime.ts","../src/interface.ts","../src/x86-emulator.ts"],"mappings":"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"}
|