Setup CPU functions to read from mmx/m64 and to write to mmx for movq
This commit is contained in:
parent
f6698ae98f
commit
abfc9496fa
34
src/cpu.js
34
src/cpu.js
|
@ -1471,6 +1471,22 @@ CPU.prototype.safe_read32s = function(addr)
|
|||
}
|
||||
};
|
||||
|
||||
CPU.prototype.safe_read64s = function(addr)
|
||||
{
|
||||
let data = {};
|
||||
if(this.paging && (addr & 0xFFF) >= 0xFF9)
|
||||
{
|
||||
data.lo = this.safe_read32s(addr);
|
||||
data.hi = this.safe_read32s(addr + 4 | 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
data.lo = this.read32s(this.translate_address_read(addr));
|
||||
data.hi = this.read32s(this.translate_address_read(addr + 4 | 0));
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
CPU.prototype.safe_write8 = function(addr, value)
|
||||
{
|
||||
dbg_assert(addr < 0x80000000);
|
||||
|
@ -3390,6 +3406,24 @@ CPU.prototype.write_g32 = function(value)
|
|||
this.reg32[this.modrm_byte >> 3 & 7] = value;
|
||||
};
|
||||
|
||||
CPU.prototype.read_xmm_mem64s = function()
|
||||
{
|
||||
let data = {};
|
||||
if(this.modrm_byte < 0xC0) {
|
||||
data = this.safe_read64s(this.modrm_resolve(this.modrm_byte));
|
||||
} else {
|
||||
data.lo = this.reg_mmxs[this.modrm_byte & 7];
|
||||
data.hi = this.reg_mmxs[(this.modrm_byte & 7) + 1];
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
CPU.prototype.write_xmm64s = function(data) {
|
||||
dbg_assert(data && data.hasOwnProperty('lo') && data.hasOwnProperty('hi'));
|
||||
this.reg_mmxs[this.modrm_byte >> 3 & 7] = data.lo;
|
||||
this.reg_mmxs[(this.modrm_byte >> 3 & 7) + 1] = data.hi;
|
||||
};
|
||||
|
||||
CPU.prototype.pic_call_irq = function(int)
|
||||
{
|
||||
try
|
||||
|
|
Loading…
Reference in a new issue