4
CPU.prototype.mmap_read8 = function(addr)
6
const value = this.memory_map_read8[addr >>> MMAP_BLOCK_BITS](addr);
7
dbg_assert(value >= 0 && value <= 0xFF);
11
CPU.prototype.mmap_write8 = function(addr, value)
13
dbg_assert(value >= 0 && value <= 0xFF);
14
this.memory_map_write8[addr >>> MMAP_BLOCK_BITS](addr, value);
17
CPU.prototype.mmap_read16 = function(addr)
19
var fn = this.memory_map_read8[addr >>> MMAP_BLOCK_BITS];
20
const value = fn(addr) | fn(addr + 1 | 0) << 8;
21
dbg_assert(value >= 0 && value <= 0xFFFF);
25
CPU.prototype.mmap_write16 = function(addr, value)
27
var fn = this.memory_map_write8[addr >>> MMAP_BLOCK_BITS];
29
dbg_assert(value >= 0 && value <= 0xFFFF);
30
fn(addr, value & 0xFF);
31
fn(addr + 1 | 0, value >> 8);
34
CPU.prototype.mmap_read32 = function(addr)
36
var aligned_addr = addr >>> MMAP_BLOCK_BITS;
38
return this.memory_map_read32[aligned_addr](addr);
41
CPU.prototype.mmap_write32 = function(addr, value)
43
var aligned_addr = addr >>> MMAP_BLOCK_BITS;
45
this.memory_map_write32[aligned_addr](addr, value);
48
CPU.prototype.mmap_write64 = function(addr, value0, value1)
50
var aligned_addr = addr >>> MMAP_BLOCK_BITS;
52
dbg_assert(aligned_addr === (addr + 7) >>> MMAP_BLOCK_BITS);
54
var write_func32 = this.memory_map_write32[aligned_addr];
55
write_func32(addr, value0);
56
write_func32(addr + 4, value1);
59
CPU.prototype.mmap_write128 = function(addr, value0, value1, value2, value3)
61
var aligned_addr = addr >>> MMAP_BLOCK_BITS;
63
dbg_assert(aligned_addr === (addr + 12) >>> MMAP_BLOCK_BITS);
65
var write_func32 = this.memory_map_write32[aligned_addr];
66
write_func32(addr, value0);
67
write_func32(addr + 4, value1);
68
write_func32(addr + 8, value2);
69
write_func32(addr + 12, value3);
76
CPU.prototype.write_blob = function(blob, offset)
78
dbg_assert(blob && blob.length >= 0);
82
dbg_assert(!this.in_mapped_range(offset));
83
dbg_assert(!this.in_mapped_range(offset + blob.length - 1));
85
this.jit_dirty_cache(offset, offset + blob.length);
86
this.mem8.set(blob, offset);
90
CPU.prototype.read_blob = function(offset, length)
94
dbg_assert(!this.in_mapped_range(offset));
95
dbg_assert(!this.in_mapped_range(offset + length - 1));
97
return this.mem8.subarray(offset, offset + length);