@aptre/v86 0.6.1 → 0.6.2
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/v86.browser.js +41 -76
- package/dist/v86.browser.js.map +3 -3
- package/dist/v86.js +41 -76
- package/dist/v86.js.map +3 -3
- package/package.json +1 -1
- package/src/browser/starter.ts +6 -2
- package/src/cpu.ts +85 -91
package/dist/v86.js
CHANGED
|
@@ -18786,7 +18786,6 @@ var CPU = class {
|
|
|
18786
18786
|
wasm_memory;
|
|
18787
18787
|
memory_size;
|
|
18788
18788
|
mem8;
|
|
18789
|
-
mem8_offset = 0;
|
|
18790
18789
|
mem32s;
|
|
18791
18790
|
segment_is_null;
|
|
18792
18791
|
segment_offsets;
|
|
@@ -18916,46 +18915,10 @@ var CPU = class {
|
|
|
18916
18915
|
this.wasm_memory = wm.wasm_memory;
|
|
18917
18916
|
this.wasm_patch();
|
|
18918
18917
|
this.create_jit_imports();
|
|
18919
|
-
this.mem8 = new Uint8Array(0);
|
|
18920
|
-
this.mem32s = new Int32Array(this.mem8.buffer);
|
|
18921
|
-
this.rebuild_wasm_views();
|
|
18922
|
-
this.devices = {};
|
|
18923
|
-
this.memory_map_read8 = [];
|
|
18924
|
-
this.memory_map_write8 = [];
|
|
18925
|
-
this.memory_map_read32 = [];
|
|
18926
|
-
this.memory_map_write32 = [];
|
|
18927
|
-
this.bios = {
|
|
18928
|
-
main: null,
|
|
18929
|
-
vga: null
|
|
18930
|
-
};
|
|
18931
|
-
this.fpu_stack_empty[0] = 255;
|
|
18932
|
-
this.fpu_stack_ptr[0] = 0;
|
|
18933
|
-
this.fpu_control_word[0] = 895;
|
|
18934
|
-
this.fpu_status_word[0] = 0;
|
|
18935
|
-
this.fpu_ip[0] = 0;
|
|
18936
|
-
this.fpu_ip_selector[0] = 0;
|
|
18937
|
-
this.fpu_opcode[0] = 0;
|
|
18938
|
-
this.fpu_dp[0] = 0;
|
|
18939
|
-
this.fpu_dp_selector[0] = 0;
|
|
18940
|
-
this.fw_value = [];
|
|
18941
|
-
this.fw_pointer = 0;
|
|
18942
|
-
this.option_roms = [];
|
|
18943
|
-
this.io = void 0;
|
|
18944
|
-
this.bus = bus;
|
|
18945
|
-
this.set_tsc(0, 0);
|
|
18946
|
-
if (false) {
|
|
18947
|
-
this.seen_code = {};
|
|
18948
|
-
this.seen_code_uncompiled = {};
|
|
18949
|
-
}
|
|
18950
|
-
}
|
|
18951
|
-
/**
|
|
18952
|
-
* Rebuild all TypedArray views into WASM linear memory.
|
|
18953
|
-
* Must be called after any wasm_memory.grow() since growth
|
|
18954
|
-
* detaches the old ArrayBuffer, invalidating all views.
|
|
18955
|
-
*/
|
|
18956
|
-
rebuild_wasm_views() {
|
|
18957
18918
|
const memory = this.wasm_memory;
|
|
18958
18919
|
this.memory_size = view(Uint32Array, memory, 812, 1);
|
|
18920
|
+
this.mem8 = new Uint8Array(0);
|
|
18921
|
+
this.mem32s = new Int32Array(this.mem8.buffer);
|
|
18959
18922
|
this.segment_is_null = view(Uint8Array, memory, 724, 8);
|
|
18960
18923
|
this.segment_offsets = view(Int32Array, memory, 736, 8);
|
|
18961
18924
|
this.segment_limits = view(Uint32Array, memory, 768, 8);
|
|
@@ -18984,22 +18947,40 @@ var CPU = class {
|
|
|
18984
18947
|
this.last_op1 = view(Int32Array, memory, 104, 1);
|
|
18985
18948
|
this.last_result = view(Int32Array, memory, 112, 1);
|
|
18986
18949
|
this.current_tsc = view(Uint32Array, memory, 960, 2);
|
|
18950
|
+
this.devices = {};
|
|
18987
18951
|
this.instruction_pointer = view(Int32Array, memory, 556, 1);
|
|
18988
18952
|
this.previous_ip = view(Int32Array, memory, 560, 1);
|
|
18989
18953
|
this.apic_enabled = view(Uint8Array, memory, 548, 1);
|
|
18990
18954
|
this.acpi_enabled = view(Uint8Array, memory, 552, 1);
|
|
18955
|
+
this.memory_map_read8 = [];
|
|
18956
|
+
this.memory_map_write8 = [];
|
|
18957
|
+
this.memory_map_read32 = [];
|
|
18958
|
+
this.memory_map_write32 = [];
|
|
18959
|
+
this.bios = {
|
|
18960
|
+
main: null,
|
|
18961
|
+
vga: null
|
|
18962
|
+
};
|
|
18991
18963
|
this.instruction_counter = view(Uint32Array, memory, 664, 1);
|
|
18992
18964
|
this.reg32 = view(Int32Array, memory, 64, 8);
|
|
18993
18965
|
this.fpu_st = view(Int32Array, memory, 1152, 4 * 8);
|
|
18994
18966
|
this.fpu_stack_empty = view(Uint8Array, memory, 816, 1);
|
|
18967
|
+
this.fpu_stack_empty[0] = 255;
|
|
18995
18968
|
this.fpu_stack_ptr = view(Uint8Array, memory, 1032, 1);
|
|
18969
|
+
this.fpu_stack_ptr[0] = 0;
|
|
18996
18970
|
this.fpu_control_word = view(Uint16Array, memory, 1036, 1);
|
|
18971
|
+
this.fpu_control_word[0] = 895;
|
|
18997
18972
|
this.fpu_status_word = view(Uint16Array, memory, 1040, 1);
|
|
18973
|
+
this.fpu_status_word[0] = 0;
|
|
18998
18974
|
this.fpu_ip = view(Int32Array, memory, 1048, 1);
|
|
18975
|
+
this.fpu_ip[0] = 0;
|
|
18999
18976
|
this.fpu_ip_selector = view(Int32Array, memory, 1052, 1);
|
|
18977
|
+
this.fpu_ip_selector[0] = 0;
|
|
19000
18978
|
this.fpu_opcode = view(Int32Array, memory, 1044, 1);
|
|
18979
|
+
this.fpu_opcode[0] = 0;
|
|
19001
18980
|
this.fpu_dp = view(Int32Array, memory, 1056, 1);
|
|
18981
|
+
this.fpu_dp[0] = 0;
|
|
19002
18982
|
this.fpu_dp_selector = view(Int32Array, memory, 1060, 1);
|
|
18983
|
+
this.fpu_dp_selector[0] = 0;
|
|
19003
18984
|
this.reg_xmm32s = view(Int32Array, memory, 832, 8 * 4);
|
|
19004
18985
|
this.mxcsr = view(Int32Array, memory, 824, 1);
|
|
19005
18986
|
this.sreg = view(Uint16Array, memory, 668, 8);
|
|
@@ -19007,6 +18988,16 @@ var CPU = class {
|
|
|
19007
18988
|
this.reg_pdpte = view(Int32Array, memory, 968, 8);
|
|
19008
18989
|
this.svga_dirty_bitmap_min_offset = view(Uint32Array, memory, 716, 1);
|
|
19009
18990
|
this.svga_dirty_bitmap_max_offset = view(Uint32Array, memory, 720, 1);
|
|
18991
|
+
this.fw_value = [];
|
|
18992
|
+
this.fw_pointer = 0;
|
|
18993
|
+
this.option_roms = [];
|
|
18994
|
+
this.io = void 0;
|
|
18995
|
+
this.bus = bus;
|
|
18996
|
+
this.set_tsc(0, 0);
|
|
18997
|
+
if (false) {
|
|
18998
|
+
this.seen_code = {};
|
|
18999
|
+
this.seen_code_uncompiled = {};
|
|
19000
|
+
}
|
|
19010
19001
|
}
|
|
19011
19002
|
mmap_read8(addr) {
|
|
19012
19003
|
const value = this.memory_map_read8[addr >>> MMAP_BLOCK_BITS](addr);
|
|
@@ -19309,23 +19300,15 @@ var CPU = class {
|
|
|
19309
19300
|
);
|
|
19310
19301
|
}
|
|
19311
19302
|
resize_memory(new_size) {
|
|
19312
|
-
const
|
|
19313
|
-
const
|
|
19314
|
-
const
|
|
19315
|
-
if (
|
|
19316
|
-
const
|
|
19317
|
-
|
|
19318
|
-
|
|
19319
|
-
|
|
19320
|
-
|
|
19321
|
-
}
|
|
19322
|
-
this.mem8 = view(Uint8Array, this.wasm_memory, mem8_offset, new_size);
|
|
19323
|
-
this.mem32s = view(
|
|
19324
|
-
Int32Array,
|
|
19325
|
-
this.wasm_memory,
|
|
19326
|
-
mem8_offset,
|
|
19327
|
-
new_size >> 2
|
|
19328
|
-
);
|
|
19303
|
+
const offset = this.mem8.byteOffset;
|
|
19304
|
+
const needed = offset + new_size;
|
|
19305
|
+
const current = this.wasm_memory.buffer.byteLength;
|
|
19306
|
+
if (needed > current) {
|
|
19307
|
+
const pages = Math.ceil((needed - current) / WASM_PAGE_SIZE);
|
|
19308
|
+
this.wasm_memory.grow(pages);
|
|
19309
|
+
}
|
|
19310
|
+
this.mem8 = view(Uint8Array, this.wasm_memory, offset, new_size);
|
|
19311
|
+
this.mem32s = view(Uint32Array, this.wasm_memory, offset, new_size >> 2);
|
|
19329
19312
|
this.memory_size[0] = new_size;
|
|
19330
19313
|
}
|
|
19331
19314
|
set_state(state) {
|
|
@@ -19634,10 +19617,8 @@ var CPU = class {
|
|
|
19634
19617
|
this.memory_size[0] === 0,
|
|
19635
19618
|
"Expected uninitialised memory"
|
|
19636
19619
|
);
|
|
19637
|
-
const memory_offset = this.allocate_memory(size);
|
|
19638
|
-
this.rebuild_wasm_views();
|
|
19639
19620
|
this.memory_size[0] = size;
|
|
19640
|
-
|
|
19621
|
+
const memory_offset = this.allocate_memory(size);
|
|
19641
19622
|
this.mem8 = view(Uint8Array, this.wasm_memory, memory_offset, size);
|
|
19642
19623
|
this.mem32s = view(
|
|
19643
19624
|
Uint32Array,
|
|
@@ -19881,21 +19862,6 @@ var CPU = class {
|
|
|
19881
19862
|
}
|
|
19882
19863
|
}
|
|
19883
19864
|
this.debug_init();
|
|
19884
|
-
this.rebuild_wasm_views();
|
|
19885
|
-
if (this.mem8_offset > 0) {
|
|
19886
|
-
this.mem8 = view(
|
|
19887
|
-
Uint8Array,
|
|
19888
|
-
this.wasm_memory,
|
|
19889
|
-
this.mem8_offset,
|
|
19890
|
-
this.memory_size[0]
|
|
19891
|
-
);
|
|
19892
|
-
this.mem32s = view(
|
|
19893
|
-
Uint32Array,
|
|
19894
|
-
this.wasm_memory,
|
|
19895
|
-
this.mem8_offset,
|
|
19896
|
-
this.memory_size[0] >> 2
|
|
19897
|
-
);
|
|
19898
|
-
}
|
|
19899
19865
|
}
|
|
19900
19866
|
load_multiboot(buffer) {
|
|
19901
19867
|
if (this.bios.main) {
|
|
@@ -26209,11 +26175,10 @@ var V86 = class {
|
|
|
26209
26175
|
const memory_size = options.memory_size || 64 * 1024 * 1024;
|
|
26210
26176
|
const vga_memory_size = options.vga_memory_size || 8 * 1024 * 1024;
|
|
26211
26177
|
const memory_max = options.memory_max || (memory_size + vga_memory_size) * 4;
|
|
26212
|
-
const WASM_PAGE_SIZE2 = 65536;
|
|
26213
26178
|
const wasm_initial_pages = 256;
|
|
26214
26179
|
const wasm_max_pages = Math.max(
|
|
26215
26180
|
wasm_initial_pages,
|
|
26216
|
-
Math.min(Math.ceil(memory_max /
|
|
26181
|
+
Math.min(Math.ceil(memory_max / WASM_PAGE_SIZE), 65536)
|
|
26217
26182
|
);
|
|
26218
26183
|
const wasm_memory = new WebAssembly.Memory({
|
|
26219
26184
|
initial: wasm_initial_pages,
|