@specy/x86 2.4.0 → 2.5.0
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/dist/index.d.mts +82 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +242 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -50,7 +50,30 @@ declare enum RegisterSize {
|
|
|
50
50
|
/** 16 bytes, the width of an SSE register. */
|
|
51
51
|
Quad = 16
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* What produced a history entry: an instruction the program ran, or a Poke,
|
|
55
|
+
* one or more register and memory values the host changed between two
|
|
56
|
+
* instructions. Always present on an entry, so a reader never has to infer it.
|
|
57
|
+
*/
|
|
58
|
+
type ExecutionStepKind = 'instruction' | 'poke';
|
|
59
|
+
/**
|
|
60
|
+
* One value a Poke changed, with what the emulator held when the write was
|
|
61
|
+
* made and what it holds when the transaction closes. Register names are the
|
|
62
|
+
* ones this package already uses: `rax`, `xmm3`, `st0`, `mxcsr` and so on.
|
|
63
|
+
*/
|
|
64
|
+
type PokeWrite = {
|
|
65
|
+
type: 'register';
|
|
66
|
+
name: string;
|
|
67
|
+
old: bigint;
|
|
68
|
+
new: bigint;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'memory';
|
|
71
|
+
address: bigint;
|
|
72
|
+
old: number[];
|
|
73
|
+
new: number[];
|
|
74
|
+
};
|
|
53
75
|
type ExecutionStep = {
|
|
76
|
+
kind: ExecutionStepKind;
|
|
54
77
|
mutations: MutationOperation[];
|
|
55
78
|
pc: number;
|
|
56
79
|
old_ccr: {
|
|
@@ -60,7 +83,8 @@ type ExecutionStep = {
|
|
|
60
83
|
bits: number;
|
|
61
84
|
};
|
|
62
85
|
line: number;
|
|
63
|
-
file?: string;
|
|
86
|
+
file?: string; /** Present only on a `poke` entry: the values the host wrote, old and new. */
|
|
87
|
+
writes?: PokeWrite[];
|
|
64
88
|
};
|
|
65
89
|
type MutationOperation = {
|
|
66
90
|
type: 'WriteRegister';
|
|
@@ -846,6 +870,9 @@ declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X8
|
|
|
846
870
|
private lastSourceCode;
|
|
847
871
|
private history;
|
|
848
872
|
private callStack;
|
|
873
|
+
private openPoke;
|
|
874
|
+
/** True while an instruction is running, so a Poke cannot open on top of one. */
|
|
875
|
+
private executing;
|
|
849
876
|
private constructor();
|
|
850
877
|
static create(options?: X86EmulatorOptions): Promise<X86Emulator>;
|
|
851
878
|
get module(): BlinkenlibModule;
|
|
@@ -874,10 +901,49 @@ declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X8
|
|
|
874
901
|
checkProject(project: X86Project): Promise<MonacoError[]>;
|
|
875
902
|
undo(): void;
|
|
876
903
|
canUndo(): boolean;
|
|
904
|
+
/**
|
|
905
|
+
* Opens a Poke: a register or memory value the HOST changes between two
|
|
906
|
+
* instructions, recorded as one step of this history and undone like an
|
|
907
|
+
* instruction.
|
|
908
|
+
*
|
|
909
|
+
* Everything `setRegisterValue`, `setFpuState` and `writeMemoryBytes`
|
|
910
|
+
* change until `endPoke()` becomes one entry, however many calls it took.
|
|
911
|
+
* Outside a transaction those setters stay exactly as direct as they were:
|
|
912
|
+
* a Testcase presetting its starting values records nothing.
|
|
913
|
+
*
|
|
914
|
+
* Throws when a poke is already open, and when an instruction is running -
|
|
915
|
+
* a step inside a transaction would hand the program's own writes to the
|
|
916
|
+
* poke, and undoing it would then revert the instruction too.
|
|
917
|
+
*/
|
|
918
|
+
beginPoke(): void;
|
|
919
|
+
/**
|
|
920
|
+
* Closes the open Poke and records it, returning whether anything was
|
|
921
|
+
* recorded: a transaction that changed no value - because it wrote
|
|
922
|
+
* nothing, or wrote the value that was already there - records nothing and
|
|
923
|
+
* answers false, so the caller never shows an Undo step that reverts
|
|
924
|
+
* nothing.
|
|
925
|
+
*
|
|
926
|
+
* Nothing here resumes the machine: the poke changed state, not why the
|
|
927
|
+
* program stopped, and the next step resumes a paused machine itself.
|
|
928
|
+
*
|
|
929
|
+
* A poke takes one slot of the history, exactly as an instruction does, so
|
|
930
|
+
* with `initialize(0)` it applies and answers true while the zero-capacity
|
|
931
|
+
* history keeps it no more than it keeps an instruction.
|
|
932
|
+
*
|
|
933
|
+
* Throws when no poke is open.
|
|
934
|
+
*/
|
|
935
|
+
endPoke(): boolean;
|
|
936
|
+
/** True between `beginPoke()` and `endPoke()`. */
|
|
937
|
+
isPokeOpen(): boolean;
|
|
877
938
|
step(): Promise<{
|
|
878
939
|
terminated: boolean;
|
|
879
940
|
}>;
|
|
880
941
|
getStatus(): EmulatorStatus;
|
|
942
|
+
/**
|
|
943
|
+
* Inside an open Poke the bytes this overwrites are journaled first, so
|
|
944
|
+
* the transaction can put them back; outside one the write goes straight
|
|
945
|
+
* into the machine and records nothing, as it always has.
|
|
946
|
+
*/
|
|
881
947
|
writeMemoryBytes(address: bigint, data: Uint8Array): void;
|
|
882
948
|
readMemoryBytes(address: bigint, length: bigint): Uint8Array;
|
|
883
949
|
getNextInstruction(): Instruction | null;
|
|
@@ -921,6 +987,7 @@ declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X8
|
|
|
921
987
|
setFpuState(state: X86FpuState): void;
|
|
922
988
|
hasTerminated(): boolean;
|
|
923
989
|
run(limit?: number, breakpoints?: X86Breakpoint[]): Promise<EmulatorStatus>;
|
|
990
|
+
private assertNoOpenPoke;
|
|
924
991
|
private validateRunLimit;
|
|
925
992
|
private resolveBreakpointAddresses;
|
|
926
993
|
private runWithBreakpoints;
|
|
@@ -942,11 +1009,24 @@ declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X8
|
|
|
942
1009
|
* replaying the mutations.
|
|
943
1010
|
*/
|
|
944
1011
|
private recordFpuMutations;
|
|
1012
|
+
/**
|
|
1013
|
+
* The memory a Poke actually changed. The journal is collapsed per byte
|
|
1014
|
+
* first - the EARLIEST `old` of every address, from the first write that
|
|
1015
|
+
* touched it - and only then compared against what memory holds now, so a
|
|
1016
|
+
* range written twice inside one transaction is diffed against what the
|
|
1017
|
+
* machine held before the poke and not against the intermediate value the
|
|
1018
|
+
* first write left. A range written away and back therefore leaves no
|
|
1019
|
+
* trace at all, and two differing writes to one range leave one entry
|
|
1020
|
+
* carrying the value the machine really had. What survives keeps the old
|
|
1021
|
+
* bytes the way an instruction's writes do, for undo to put back in
|
|
1022
|
+
* reverse order.
|
|
1023
|
+
*/
|
|
1024
|
+
private recordPokeMemoryMutations;
|
|
945
1025
|
private recordMemoryMutations;
|
|
946
1026
|
private recordControlFlowMutation;
|
|
947
1027
|
private emit;
|
|
948
1028
|
}
|
|
949
1029
|
declare function createX86Emulator(options?: X86EmulatorOptions): Promise<X86Emulator>;
|
|
950
1030
|
//#endregion
|
|
951
|
-
export { AssemblerId, AssemblerMode, BaseEmulator, Binary, BlinkRunOptions, BlinkRuntime, BlinkRuntimeCallbacks, BlinkRuntimeOptions, BlinkState, BlinkenlibModule, BlinkenlibModuleOptions, CompilationError, DEFAULT_ASSEMBLER_ID, DiagnosticLine, DiagnosticSeverity, DiagnosticSpan, DiagnosticsParser, DisassemblySnapshot, EmscriptenFS, EmulatorConfig, EmulatorDecoration, EmulatorStatus, ExecutionStep, Instruction, LinkerBinary, MaybePromise, MemoryReadResult, MemoryWriteResult, MonacoError, MutationOperation, NativeControlFlowKind, NativeInstruction, NativeMemoryWrite, NativeRunControls, NativeRunStop, NativeRunStopKind, NativeStepInfo, NativeSymbol, RegisterHex, RegisterSize, RegisterSnapshot, ResourceSource, StackFrame, StatusRegister, StopReason, StopReasonKind, X86Breakpoint, X86CompilationDiagnostic, X86CompileResult, X86Emulator, X86EmulatorEventHandler, X86EmulatorEventMap, X86EmulatorEventName, X86EmulatorOptions, X86FpuState, X86Project, X86ProjectFile, X86RegisterName, X86SourceLocation, X86SseRegisterName, X86X87RegisterName, X86_FPU_STATE_CW_OFFSET, X86_FPU_STATE_DP_OFFSET, X86_FPU_STATE_IP_OFFSET, X86_FPU_STATE_MXCSR_OFFSET, X86_FPU_STATE_OP_OFFSET, X86_FPU_STATE_SIZE, X86_FPU_STATE_ST_OFFSET, X86_FPU_STATE_SW_OFFSET, X86_FPU_STATE_TW_OFFSET, X86_FPU_STATE_XMM_OFFSET, X86_PROJECT_ROOT, X86_REGISTER_NAMES, X86_SSE_REGISTERS, X86_X87_REGISTERS, assemblers, createX86Emulator, decodeFpuState, defaultResourceUrl, emptyFpuStateBlock, encodeFpuState, fasmDiagnostics, fpuStateBlocksEqual, gnuDiagnostics, isNodeRuntime, ldDiagnostics, locateDiagnosticColumn, locateDiagnosticSpan, nasmDiagnostics, observeCallbackResult, readLogicalStBits, readLogicalStTags, readResourceBytes, selectX86Source, stageX86Project, toResourceUrl, validateX86Project, x86ProjectSourcePath, x86ProjectText };
|
|
1031
|
+
export { AssemblerId, AssemblerMode, BaseEmulator, Binary, BlinkRunOptions, BlinkRuntime, BlinkRuntimeCallbacks, BlinkRuntimeOptions, BlinkState, BlinkenlibModule, BlinkenlibModuleOptions, CompilationError, DEFAULT_ASSEMBLER_ID, DiagnosticLine, DiagnosticSeverity, DiagnosticSpan, DiagnosticsParser, DisassemblySnapshot, EmscriptenFS, EmulatorConfig, EmulatorDecoration, EmulatorStatus, ExecutionStep, ExecutionStepKind, Instruction, LinkerBinary, MaybePromise, MemoryReadResult, MemoryWriteResult, MonacoError, MutationOperation, NativeControlFlowKind, NativeInstruction, NativeMemoryWrite, NativeRunControls, NativeRunStop, NativeRunStopKind, NativeStepInfo, NativeSymbol, PokeWrite, RegisterHex, RegisterSize, RegisterSnapshot, ResourceSource, StackFrame, StatusRegister, StopReason, StopReasonKind, X86Breakpoint, X86CompilationDiagnostic, X86CompileResult, X86Emulator, X86EmulatorEventHandler, X86EmulatorEventMap, X86EmulatorEventName, X86EmulatorOptions, X86FpuState, X86Project, X86ProjectFile, X86RegisterName, X86SourceLocation, X86SseRegisterName, X86X87RegisterName, X86_FPU_STATE_CW_OFFSET, X86_FPU_STATE_DP_OFFSET, X86_FPU_STATE_IP_OFFSET, X86_FPU_STATE_MXCSR_OFFSET, X86_FPU_STATE_OP_OFFSET, X86_FPU_STATE_SIZE, X86_FPU_STATE_ST_OFFSET, X86_FPU_STATE_SW_OFFSET, X86_FPU_STATE_TW_OFFSET, X86_FPU_STATE_XMM_OFFSET, X86_PROJECT_ROOT, X86_REGISTER_NAMES, X86_SSE_REGISTERS, X86_X87_REGISTERS, assemblers, createX86Emulator, decodeFpuState, defaultResourceUrl, emptyFpuStateBlock, encodeFpuState, fasmDiagnostics, fpuStateBlocksEqual, gnuDiagnostics, isNodeRuntime, ldDiagnostics, locateDiagnosticColumn, locateDiagnosticSpan, nasmDiagnostics, observeCallbackResult, readLogicalStBits, readLogicalStTags, readResourceBytes, selectX86Source, stageX86Project, toResourceUrl, validateX86Project, x86ProjectSourcePath, x86ProjectText };
|
|
952
1032
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/resources.ts","../src/interface.ts","../src/callbacks.ts","../src/types.ts","../src/wasm-assembler.ts","../src/assemblers.ts","../src/wasm-types.ts","../src/blink-runtime.ts","../src/fpu-state.ts","../src/project.ts","../src/x86-emulator.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/resources.ts","../src/interface.ts","../src/callbacks.ts","../src/types.ts","../src/wasm-assembler.ts","../src/assemblers.ts","../src/wasm-types.ts","../src/blink-runtime.ts","../src/fpu-state.ts","../src/project.ts","../src/x86-emulator.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1965,12 +1965,14 @@ function cloneCallStack(stack) {
|
|
|
1965
1965
|
}
|
|
1966
1966
|
function stripPrivateHistory(entry) {
|
|
1967
1967
|
return {
|
|
1968
|
+
kind: entry.kind,
|
|
1968
1969
|
mutations: entry.mutations,
|
|
1969
1970
|
pc: entry.pc,
|
|
1970
1971
|
old_ccr: entry.old_ccr,
|
|
1971
1972
|
new_ccr: entry.new_ccr,
|
|
1972
1973
|
line: entry.line,
|
|
1973
|
-
file: entry.file
|
|
1974
|
+
file: entry.file,
|
|
1975
|
+
...entry.writes ? { writes: entry.writes } : {}
|
|
1974
1976
|
};
|
|
1975
1977
|
}
|
|
1976
1978
|
function toHistoryPc(address) {
|
|
@@ -2003,6 +2005,9 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2003
2005
|
lastSourceCode = "";
|
|
2004
2006
|
history = new CircularHistory(0);
|
|
2005
2007
|
callStack = [];
|
|
2008
|
+
openPoke = null;
|
|
2009
|
+
/** True while an instruction is running, so a Poke cannot open on top of one. */
|
|
2010
|
+
executing = false;
|
|
2006
2011
|
constructor(runtime) {
|
|
2007
2012
|
super({
|
|
2008
2013
|
systemSize: 8,
|
|
@@ -2086,8 +2091,15 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2086
2091
|
this.runtime.loadElf(data);
|
|
2087
2092
|
}
|
|
2088
2093
|
async runUntilBlocked() {
|
|
2094
|
+
this.assertNoOpenPoke("run");
|
|
2089
2095
|
if (this.isTracingEnabled()) return this.run();
|
|
2090
|
-
|
|
2096
|
+
const wasExecuting = this.executing;
|
|
2097
|
+
this.executing = true;
|
|
2098
|
+
try {
|
|
2099
|
+
await this.runtime.runUntilBlocked();
|
|
2100
|
+
} finally {
|
|
2101
|
+
this.executing = wasExecuting;
|
|
2102
|
+
}
|
|
2091
2103
|
return this.getStatus();
|
|
2092
2104
|
}
|
|
2093
2105
|
provideInput(line) {
|
|
@@ -2172,11 +2184,114 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2172
2184
|
const entry = this.history.peekNewest();
|
|
2173
2185
|
return Boolean(entry?.reversible);
|
|
2174
2186
|
}
|
|
2187
|
+
/**
|
|
2188
|
+
* Opens a Poke: a register or memory value the HOST changes between two
|
|
2189
|
+
* instructions, recorded as one step of this history and undone like an
|
|
2190
|
+
* instruction.
|
|
2191
|
+
*
|
|
2192
|
+
* Everything `setRegisterValue`, `setFpuState` and `writeMemoryBytes`
|
|
2193
|
+
* change until `endPoke()` becomes one entry, however many calls it took.
|
|
2194
|
+
* Outside a transaction those setters stay exactly as direct as they were:
|
|
2195
|
+
* a Testcase presetting its starting values records nothing.
|
|
2196
|
+
*
|
|
2197
|
+
* Throws when a poke is already open, and when an instruction is running -
|
|
2198
|
+
* a step inside a transaction would hand the program's own writes to the
|
|
2199
|
+
* poke, and undoing it would then revert the instruction too.
|
|
2200
|
+
*/
|
|
2201
|
+
beginPoke() {
|
|
2202
|
+
if (this.openPoke) throw new Error("A poke is already open: end it before beginning another");
|
|
2203
|
+
if (this.executing) throw new Error("Cannot begin a poke while an instruction is executing");
|
|
2204
|
+
const snapshot = this.runtime.getRegisterSnapshot();
|
|
2205
|
+
this.openPoke = {
|
|
2206
|
+
registersBefore: cloneRegisterValues(snapshot),
|
|
2207
|
+
flagsBefore: snapshot.flags,
|
|
2208
|
+
fpuBefore: this.runtime.getFpuStateRaw(),
|
|
2209
|
+
callStackBefore: cloneCallStack(this.callStack),
|
|
2210
|
+
memoryWrites: []
|
|
2211
|
+
};
|
|
2212
|
+
}
|
|
2213
|
+
/**
|
|
2214
|
+
* Closes the open Poke and records it, returning whether anything was
|
|
2215
|
+
* recorded: a transaction that changed no value - because it wrote
|
|
2216
|
+
* nothing, or wrote the value that was already there - records nothing and
|
|
2217
|
+
* answers false, so the caller never shows an Undo step that reverts
|
|
2218
|
+
* nothing.
|
|
2219
|
+
*
|
|
2220
|
+
* Nothing here resumes the machine: the poke changed state, not why the
|
|
2221
|
+
* program stopped, and the next step resumes a paused machine itself.
|
|
2222
|
+
*
|
|
2223
|
+
* A poke takes one slot of the history, exactly as an instruction does, so
|
|
2224
|
+
* with `initialize(0)` it applies and answers true while the zero-capacity
|
|
2225
|
+
* history keeps it no more than it keeps an instruction.
|
|
2226
|
+
*
|
|
2227
|
+
* Throws when no poke is open.
|
|
2228
|
+
*/
|
|
2229
|
+
endPoke() {
|
|
2230
|
+
const poke = this.openPoke;
|
|
2231
|
+
if (!poke) throw new Error("No poke is open: begin one before ending it");
|
|
2232
|
+
this.openPoke = null;
|
|
2233
|
+
const after = this.runtime.getRegisterSnapshot();
|
|
2234
|
+
const registersAfter = cloneRegisterValues(after);
|
|
2235
|
+
const mutations = [];
|
|
2236
|
+
const writes = [];
|
|
2237
|
+
for (const register of X86_REGISTER_NAMES) {
|
|
2238
|
+
const old = poke.registersBefore[register];
|
|
2239
|
+
const value = registersAfter[register];
|
|
2240
|
+
if (old === value) continue;
|
|
2241
|
+
mutations.push({
|
|
2242
|
+
type: "WriteRegister",
|
|
2243
|
+
value: {
|
|
2244
|
+
register,
|
|
2245
|
+
old,
|
|
2246
|
+
size: 8
|
|
2247
|
+
}
|
|
2248
|
+
});
|
|
2249
|
+
writes.push({
|
|
2250
|
+
type: "register",
|
|
2251
|
+
name: register,
|
|
2252
|
+
old,
|
|
2253
|
+
new: value
|
|
2254
|
+
});
|
|
2255
|
+
}
|
|
2256
|
+
this.recordFpuMutations(poke.fpuBefore, this.runtime.getFpuStateRaw(), mutations, writes);
|
|
2257
|
+
const memoryWrites = this.recordPokeMemoryMutations(poke.memoryWrites, mutations, writes);
|
|
2258
|
+
if (writes.length === 0) return false;
|
|
2259
|
+
const location = this.runtime.getSourceLocationForAddress(after.pc);
|
|
2260
|
+
const entry = {
|
|
2261
|
+
kind: "poke",
|
|
2262
|
+
mutations,
|
|
2263
|
+
writes,
|
|
2264
|
+
pc: toHistoryPc(after.pc),
|
|
2265
|
+
old_ccr: { bits: poke.flagsBefore },
|
|
2266
|
+
new_ccr: { bits: after.flags },
|
|
2267
|
+
line: location?.line ?? -1,
|
|
2268
|
+
file: location?.path,
|
|
2269
|
+
registersBefore: poke.registersBefore,
|
|
2270
|
+
flagsBefore: poke.flagsBefore,
|
|
2271
|
+
fpuBefore: poke.fpuBefore,
|
|
2272
|
+
callStackBefore: cloneCallStack(this.callStack),
|
|
2273
|
+
memoryWrites,
|
|
2274
|
+
reversible: true
|
|
2275
|
+
};
|
|
2276
|
+
this.history.push(entry);
|
|
2277
|
+
return true;
|
|
2278
|
+
}
|
|
2279
|
+
/** True between `beginPoke()` and `endPoke()`. */
|
|
2280
|
+
isPokeOpen() {
|
|
2281
|
+
return this.openPoke !== null;
|
|
2282
|
+
}
|
|
2175
2283
|
async step() {
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2284
|
+
this.assertNoOpenPoke("step");
|
|
2285
|
+
const wasExecuting = this.executing;
|
|
2286
|
+
this.executing = true;
|
|
2287
|
+
try {
|
|
2288
|
+
if (this.isTracingEnabled()) this.captureStep();
|
|
2289
|
+
else {
|
|
2290
|
+
this.prepareOneInstructionRun();
|
|
2291
|
+
this.runtime.step();
|
|
2292
|
+
}
|
|
2293
|
+
} finally {
|
|
2294
|
+
this.executing = wasExecuting;
|
|
2180
2295
|
}
|
|
2181
2296
|
return { terminated: this.hasTerminated() };
|
|
2182
2297
|
}
|
|
@@ -2186,8 +2301,23 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2186
2301
|
if (this.runtime.state === "PROGRAM_STOPPED") return 0;
|
|
2187
2302
|
return 1;
|
|
2188
2303
|
}
|
|
2304
|
+
/**
|
|
2305
|
+
* Inside an open Poke the bytes this overwrites are journaled first, so
|
|
2306
|
+
* the transaction can put them back; outside one the write goes straight
|
|
2307
|
+
* into the machine and records nothing, as it always has.
|
|
2308
|
+
*/
|
|
2189
2309
|
writeMemoryBytes(address, data) {
|
|
2310
|
+
const poke = this.openPoke;
|
|
2311
|
+
if (!poke || data.length === 0) {
|
|
2312
|
+
this.runtime.writeMemoryBytes(address, data);
|
|
2313
|
+
return;
|
|
2314
|
+
}
|
|
2315
|
+
const old = [...this.runtime.readMemoryBytes(address, BigInt(data.length))];
|
|
2190
2316
|
this.runtime.writeMemoryBytes(address, data);
|
|
2317
|
+
poke.memoryWrites.push({
|
|
2318
|
+
address,
|
|
2319
|
+
old
|
|
2320
|
+
});
|
|
2191
2321
|
}
|
|
2192
2322
|
readMemoryBytes(address, length) {
|
|
2193
2323
|
return this.runtime.readMemoryBytes(address, length);
|
|
@@ -2286,15 +2416,25 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2286
2416
|
return this.runtime.state === "PROGRAM_STOPPED";
|
|
2287
2417
|
}
|
|
2288
2418
|
async run(limit, breakpoints = []) {
|
|
2419
|
+
this.assertNoOpenPoke("run");
|
|
2289
2420
|
this.validateRunLimit(limit);
|
|
2290
2421
|
const breakpointAddresses = this.resolveBreakpointAddresses(breakpoints);
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
limit,
|
|
2295
|
-
breakpointAddresses
|
|
2296
|
-
|
|
2297
|
-
|
|
2422
|
+
const wasExecuting = this.executing;
|
|
2423
|
+
this.executing = true;
|
|
2424
|
+
try {
|
|
2425
|
+
if (this.isTracingEnabled()) return await this.runWithHistory(limit, breakpointAddresses);
|
|
2426
|
+
if (breakpointAddresses.length) return await this.runWithBreakpoints(limit, breakpointAddresses);
|
|
2427
|
+
await this.runtime.runUntilBlocked({
|
|
2428
|
+
limit,
|
|
2429
|
+
breakpointAddresses
|
|
2430
|
+
});
|
|
2431
|
+
return this.getStatus();
|
|
2432
|
+
} finally {
|
|
2433
|
+
this.executing = wasExecuting;
|
|
2434
|
+
}
|
|
2435
|
+
}
|
|
2436
|
+
assertNoOpenPoke(what) {
|
|
2437
|
+
if (this.openPoke) throw new Error(`Cannot ${what} while a poke is open: end it first`);
|
|
2298
2438
|
}
|
|
2299
2439
|
validateRunLimit(limit) {
|
|
2300
2440
|
if (limit === void 0) return;
|
|
@@ -2358,6 +2498,7 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2358
2498
|
clearExecutionTrace() {
|
|
2359
2499
|
this.history.clear();
|
|
2360
2500
|
this.callStack = [];
|
|
2501
|
+
this.openPoke = null;
|
|
2361
2502
|
}
|
|
2362
2503
|
prepareOneInstructionRun() {
|
|
2363
2504
|
if (this.runtime.state === "PROGRAM_LOADED" || this.runtime.state === "PROGRAM_STOPPED") {
|
|
@@ -2402,6 +2543,7 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2402
2543
|
if (nativeStep.valid) this.recordControlFlowMutation(nativeStep, instruction, mutations);
|
|
2403
2544
|
const location = this.runtime.getSourceLocationForAddress(pcBefore);
|
|
2404
2545
|
const entry = {
|
|
2546
|
+
kind: "instruction",
|
|
2405
2547
|
mutations,
|
|
2406
2548
|
pc: toHistoryPc(pcBefore),
|
|
2407
2549
|
old_ccr: { bits: flagsBefore },
|
|
@@ -2428,7 +2570,7 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2428
2570
|
* exact either way, because it restores the whole block rather than
|
|
2429
2571
|
* replaying the mutations.
|
|
2430
2572
|
*/
|
|
2431
|
-
recordFpuMutations(fpuBefore, fpuAfter, mutations) {
|
|
2573
|
+
recordFpuMutations(fpuBefore, fpuAfter, mutations, writes) {
|
|
2432
2574
|
if (fpuStateBlocksEqual(fpuBefore, fpuAfter)) return;
|
|
2433
2575
|
const stateBefore = decodeFpuState(fpuBefore);
|
|
2434
2576
|
const stateAfter = decodeFpuState(fpuAfter);
|
|
@@ -2442,15 +2584,29 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2442
2584
|
size: 16
|
|
2443
2585
|
}
|
|
2444
2586
|
});
|
|
2587
|
+
writes?.push({
|
|
2588
|
+
type: "register",
|
|
2589
|
+
name: X86_SSE_REGISTERS[index],
|
|
2590
|
+
old: stateBefore.xmm[index],
|
|
2591
|
+
new: stateAfter.xmm[index]
|
|
2592
|
+
});
|
|
2445
2593
|
}
|
|
2446
|
-
if (stateBefore.mxcsr !== stateAfter.mxcsr)
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2594
|
+
if (stateBefore.mxcsr !== stateAfter.mxcsr) {
|
|
2595
|
+
mutations.push({
|
|
2596
|
+
type: "WriteRegister",
|
|
2597
|
+
value: {
|
|
2598
|
+
register: "mxcsr",
|
|
2599
|
+
old: BigInt(stateBefore.mxcsr),
|
|
2600
|
+
size: 4
|
|
2601
|
+
}
|
|
2602
|
+
});
|
|
2603
|
+
writes?.push({
|
|
2604
|
+
type: "register",
|
|
2605
|
+
name: "mxcsr",
|
|
2450
2606
|
old: BigInt(stateBefore.mxcsr),
|
|
2451
|
-
|
|
2452
|
-
}
|
|
2453
|
-
}
|
|
2607
|
+
new: BigInt(stateAfter.mxcsr)
|
|
2608
|
+
});
|
|
2609
|
+
}
|
|
2454
2610
|
const stBitsBefore = readLogicalStBits(fpuBefore);
|
|
2455
2611
|
const stBitsAfter = readLogicalStBits(fpuAfter);
|
|
2456
2612
|
for (let index = 0; index < stBitsBefore.length; index += 1) {
|
|
@@ -2463,6 +2619,12 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2463
2619
|
size: 8
|
|
2464
2620
|
}
|
|
2465
2621
|
});
|
|
2622
|
+
writes?.push({
|
|
2623
|
+
type: "register",
|
|
2624
|
+
name: X86_X87_REGISTERS[index],
|
|
2625
|
+
old: stBitsBefore[index],
|
|
2626
|
+
new: stBitsAfter[index]
|
|
2627
|
+
});
|
|
2466
2628
|
}
|
|
2467
2629
|
for (const word of [
|
|
2468
2630
|
"fctrl",
|
|
@@ -2478,7 +2640,66 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
2478
2640
|
size: 2
|
|
2479
2641
|
}
|
|
2480
2642
|
});
|
|
2643
|
+
writes?.push({
|
|
2644
|
+
type: "register",
|
|
2645
|
+
name: word,
|
|
2646
|
+
old: BigInt(stateBefore[word]),
|
|
2647
|
+
new: BigInt(stateAfter[word])
|
|
2648
|
+
});
|
|
2649
|
+
}
|
|
2650
|
+
}
|
|
2651
|
+
/**
|
|
2652
|
+
* The memory a Poke actually changed. The journal is collapsed per byte
|
|
2653
|
+
* first - the EARLIEST `old` of every address, from the first write that
|
|
2654
|
+
* touched it - and only then compared against what memory holds now, so a
|
|
2655
|
+
* range written twice inside one transaction is diffed against what the
|
|
2656
|
+
* machine held before the poke and not against the intermediate value the
|
|
2657
|
+
* first write left. A range written away and back therefore leaves no
|
|
2658
|
+
* trace at all, and two differing writes to one range leave one entry
|
|
2659
|
+
* carrying the value the machine really had. What survives keeps the old
|
|
2660
|
+
* bytes the way an instruction's writes do, for undo to put back in
|
|
2661
|
+
* reverse order.
|
|
2662
|
+
*/
|
|
2663
|
+
recordPokeMemoryMutations(journaled, mutations, writes) {
|
|
2664
|
+
const earliest = /* @__PURE__ */ new Map();
|
|
2665
|
+
for (const write of journaled) write.old.forEach((byte, index) => {
|
|
2666
|
+
const address = write.address + BigInt(index);
|
|
2667
|
+
if (!earliest.has(address)) earliest.set(address, byte);
|
|
2668
|
+
});
|
|
2669
|
+
const addresses = [...earliest.keys()].sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
|
|
2670
|
+
const ranges = [];
|
|
2671
|
+
for (const address of addresses) {
|
|
2672
|
+
const open = ranges[ranges.length - 1];
|
|
2673
|
+
const byte = earliest.get(address);
|
|
2674
|
+
if (open && open.address + BigInt(open.old.length) === address) {
|
|
2675
|
+
open.old.push(byte);
|
|
2676
|
+
continue;
|
|
2677
|
+
}
|
|
2678
|
+
ranges.push({
|
|
2679
|
+
address,
|
|
2680
|
+
old: [byte]
|
|
2681
|
+
});
|
|
2682
|
+
}
|
|
2683
|
+
const undoWrites = [];
|
|
2684
|
+
for (const range of ranges) {
|
|
2685
|
+
const current = [...this.runtime.readMemoryBytes(range.address, BigInt(range.old.length))];
|
|
2686
|
+
if (current.every((byte, index) => byte === range.old[index])) continue;
|
|
2687
|
+
undoWrites.push(range);
|
|
2688
|
+
mutations.push({
|
|
2689
|
+
type: "WriteMemoryBytes",
|
|
2690
|
+
value: {
|
|
2691
|
+
address: range.address,
|
|
2692
|
+
old: [...range.old]
|
|
2693
|
+
}
|
|
2694
|
+
});
|
|
2695
|
+
writes.push({
|
|
2696
|
+
type: "memory",
|
|
2697
|
+
address: range.address,
|
|
2698
|
+
old: [...range.old],
|
|
2699
|
+
new: current
|
|
2700
|
+
});
|
|
2481
2701
|
}
|
|
2702
|
+
return undoWrites;
|
|
2482
2703
|
}
|
|
2483
2704
|
recordMemoryMutations(writes, mutations) {
|
|
2484
2705
|
const undoWrites = [];
|