mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-10-19 02:17:45 +08:00
cleanup dyn86 core pointer refs
This commit is contained in:
@@ -400,10 +400,10 @@ static void dyn_fill_blocks(void) {
|
||||
gr=FindDynReg(DREG(TMPB));
|
||||
cache_addb(0xdd); // FRSTOR fpu.state (fpu_restore)
|
||||
cache_addb(0x25);
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.state[0])));
|
||||
cache_addd((uintptr_t)(&(dyn_dh_fpu.state[0])));
|
||||
cache_addb(0x89); // mov fpu.state_used,1
|
||||
cache_addb(0x05|(gr->index<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.state_used)));
|
||||
cache_addd((uintptr_t)(&(dyn_dh_fpu.state_used)));
|
||||
gen_releasereg(DREG(TMPB));
|
||||
dyn_synchstate(&save_info[sct].state);
|
||||
gen_create_jump(save_info[sct].return_pos);
|
||||
@@ -485,7 +485,7 @@ static void dyn_read_intro(DynReg * addr,bool release_addr=true) {
|
||||
x86gen.regs[X86_REG_EAX]->Clear();
|
||||
x86gen.regs[X86_REG_ECX]->Clear();
|
||||
cache_addw(0x0d8b); //Mov ecx,[data]
|
||||
cache_addd((Bit32u)addr->data);
|
||||
cache_addd((uintptr_t)addr->data);
|
||||
}
|
||||
x86gen.regs[X86_REG_EDX]->Clear();
|
||||
|
||||
@@ -503,7 +503,7 @@ static void dyn_read_byte(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
cache_addb(0x0c);
|
||||
cache_addw(0x048b); // mov eax,paging.tlb.read[eax*TYPE Bit32u]
|
||||
cache_addb(0x85);
|
||||
cache_addd((Bit32u)(&paging.tlb.read[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.read[0]));
|
||||
cache_addw(0xc085); // test eax,eax
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -515,7 +515,7 @@ static void dyn_read_byte(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
gen_fill_branch(je_loc);
|
||||
cache_addb(0x51); // push ecx
|
||||
cache_addb(0xe8);
|
||||
cache_addd(((Bit32u)&mem_readb_checked_dcx86) - (Bit32u)cache.pos-4);
|
||||
cache_addd((uintptr_t)(&mem_readb_checked_dcx86) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,4
|
||||
cache_addb(0x04);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -523,7 +523,7 @@ static void dyn_read_byte(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
dyn_check_bool_exception_ne();
|
||||
|
||||
cache_addw(0x058a); //mov al,[]
|
||||
cache_addd((Bit32u)(&core_dyn.readdata));
|
||||
cache_addd((uintptr_t)(&core_dyn.readdata));
|
||||
|
||||
gen_fill_jump(jmp_loc);
|
||||
|
||||
@@ -541,7 +541,7 @@ static void dyn_read_byte_release(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
cache_addb(0x0c);
|
||||
cache_addw(0x048b); // mov eax,paging.tlb.read[eax*TYPE Bit32u]
|
||||
cache_addb(0x85);
|
||||
cache_addd((Bit32u)(&paging.tlb.read[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.read[0]));
|
||||
cache_addw(0xc085); // test eax,eax
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -553,7 +553,7 @@ static void dyn_read_byte_release(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
gen_fill_branch(je_loc);
|
||||
cache_addb(0x51); // push ecx
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_readb_checked_dcx86) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_readb_checked_dcx86) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,4
|
||||
cache_addb(0x04);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -561,7 +561,7 @@ static void dyn_read_byte_release(DynReg * addr,DynReg * dst,Bitu high) {
|
||||
dyn_check_bool_exception_ne();
|
||||
|
||||
cache_addw(0x058a); //mov al,[]
|
||||
cache_addd((Bit32u)(&core_dyn.readdata));
|
||||
cache_addd((uintptr_t)(&core_dyn.readdata));
|
||||
|
||||
gen_fill_jump(jmp_loc);
|
||||
|
||||
@@ -596,7 +596,7 @@ static void dyn_read_word(DynReg * addr,DynReg * dst,bool dword) {
|
||||
cache_addb(0x0a);
|
||||
cache_addw(0x048b); // mov eax,paging.tlb.read[eax*TYPE Bit32u]
|
||||
cache_addb(0x85);
|
||||
cache_addd((Bit32u)(&paging.tlb.read[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.read[0]));
|
||||
cache_addw(0xc085); // test eax,eax
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -611,7 +611,7 @@ static void dyn_read_word(DynReg * addr,DynReg * dst,bool dword) {
|
||||
gen_fill_branch(je_loc);
|
||||
cache_addb(0x51); // push ecx
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_readd_checked_dcx86) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_readd_checked_dcx86) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,4
|
||||
cache_addb(0x04);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -642,7 +642,7 @@ static void dyn_read_word_release(DynReg * addr,DynReg * dst,bool dword) {
|
||||
cache_addb(0x0a);
|
||||
cache_addw(0x048b); // mov eax,paging.tlb.read[eax*TYPE Bit32u]
|
||||
cache_addb(0x85);
|
||||
cache_addd((Bit32u)(&paging.tlb.read[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.read[0]));
|
||||
cache_addw(0xc085); // test eax,eax
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -657,7 +657,7 @@ static void dyn_read_word_release(DynReg * addr,DynReg * dst,bool dword) {
|
||||
gen_fill_branch(je_loc);
|
||||
cache_addb(0x51); // push ecx
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_readd_checked_dcx86) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_readd_checked_dcx86) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,4
|
||||
cache_addb(0x04);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -701,7 +701,7 @@ static void dyn_write_intro(DynReg * addr,bool release_addr=true) {
|
||||
x86gen.regs[X86_REG_ECX]->Clear();
|
||||
x86gen.regs[X86_REG_ECX]->notusable=true;
|
||||
cache_addb(0xa1); //Mov eax,[data]
|
||||
cache_addd((Bit32u)addr->data);
|
||||
cache_addd((uintptr_t)addr->data);
|
||||
}
|
||||
|
||||
cache_addw(0xc88b); // mov ecx,eax
|
||||
@@ -715,7 +715,7 @@ static void dyn_write_byte(DynReg * addr,DynReg * val,bool high) {
|
||||
cache_addb(0x0c);
|
||||
cache_addw(0x0c8b); // mov ecx,paging.tlb.read[ecx*TYPE Bit32u]
|
||||
cache_addb(0x8d);
|
||||
cache_addd((Bit32u)(&paging.tlb.write[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.write[0]));
|
||||
cache_addw(0xc985); // test ecx,ecx
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -731,7 +731,7 @@ static void dyn_write_byte(DynReg * addr,DynReg * val,bool high) {
|
||||
cache_addb(0x50); // push eax
|
||||
if (GCC_UNLIKELY(high)) cache_addw(0xe086+((genreg->index+(genreg->index<<3))<<8));
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_writeb_checked) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_writeb_checked) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,8
|
||||
cache_addb(0x08);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -754,7 +754,7 @@ static void dyn_write_byte_release(DynReg * addr,DynReg * val,bool high) {
|
||||
cache_addb(0x0c);
|
||||
cache_addw(0x0c8b); // mov ecx,paging.tlb.read[ecx*TYPE Bit32u]
|
||||
cache_addb(0x8d);
|
||||
cache_addd((Bit32u)(&paging.tlb.write[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.write[0]));
|
||||
cache_addw(0xc985); // test ecx,ecx
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -770,7 +770,7 @@ static void dyn_write_byte_release(DynReg * addr,DynReg * val,bool high) {
|
||||
cache_addb(0x50); // push eax
|
||||
if (GCC_UNLIKELY(high)) cache_addw(0xe086+((genreg->index+(genreg->index<<3))<<8));
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_writeb_checked) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_writeb_checked) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,8
|
||||
cache_addb(0x08);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -798,7 +798,7 @@ static void dyn_write_word(DynReg * addr,DynReg * val,bool dword) {
|
||||
cache_addb(0x0a);
|
||||
cache_addw(0x0c8b); // mov ecx,paging.tlb.read[ecx*TYPE Bit32u]
|
||||
cache_addb(0x8d);
|
||||
cache_addd((Bit32u)(&paging.tlb.write[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.write[0]));
|
||||
cache_addw(0xc985); // test ecx,ecx
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -814,7 +814,7 @@ static void dyn_write_word(DynReg * addr,DynReg * val,bool dword) {
|
||||
cache_addb(0x50+genreg->index);
|
||||
cache_addb(0x50); // push eax
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)((char*)(&mem_writed_checked) - (char*)cache.pos - 4));
|
||||
cache_addd((uintptr_t)(&mem_writed_checked) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,8
|
||||
cache_addb(0x08);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -847,7 +847,7 @@ static void dyn_write_word_release(DynReg * addr,DynReg * val,bool dword) {
|
||||
cache_addb(0x0a);
|
||||
cache_addw(0x0c8b); // mov ecx,paging.tlb.read[ecx*TYPE Bit32u]
|
||||
cache_addb(0x8d);
|
||||
cache_addd((Bit32u)(&paging.tlb.write[0]));
|
||||
cache_addd((uintptr_t)(&paging.tlb.write[0]));
|
||||
cache_addw(0xc985); // test ecx,ecx
|
||||
Bit8u* je_loc=gen_create_branch(BR_Z);
|
||||
|
||||
@@ -863,7 +863,7 @@ static void dyn_write_word_release(DynReg * addr,DynReg * val,bool dword) {
|
||||
cache_addb(0x50+genreg->index);
|
||||
cache_addb(0x50); // push eax
|
||||
cache_addb(0xe8);
|
||||
cache_addd(((Bit32u)&mem_writed_checked) - (Bit32u)cache.pos-4);
|
||||
cache_addd((uintptr_t)(&mem_writed_checked) - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
cache_addw(0xc483); // add esp,8
|
||||
cache_addb(0x08);
|
||||
cache_addw(0x012c); // sub al,1
|
||||
@@ -1987,7 +1987,8 @@ static CacheBlock * CreateCacheBlock(CodePageHandler * codepage,PhysPt start,Bit
|
||||
decode.block->page.start=decode.page.index;
|
||||
codepage->AddCacheBlock(decode.block);
|
||||
|
||||
gen_save_host_direct(&cache.block.running,(Bit32u)decode.block);
|
||||
cache.block.running = decode.block;
|
||||
// gen_save_host_direct(&cache.block.running,(uintptr_t)decode.block);
|
||||
for (i=0;i<G_MAX;i++) {
|
||||
DynRegs[i].flags&=~(DYNFLG_ACTIVE|DYNFLG_CHANGED);
|
||||
DynRegs[i].genreg=0;
|
||||
|
@@ -40,7 +40,7 @@ void dyn_mmx_op(Bit8u op) {
|
||||
gen_call_function((void*)&MMX_LOAD_64, "%Ddr", DREG(EA));
|
||||
cache_addw(0x0F | (op << 8));
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
} else dyn_mmx_simple(op, decode.modrm.val);
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ void dyn_mmx_movd_pqed() {
|
||||
// mmxtmp contains loaded value - finish by loading it to mm
|
||||
cache_addw(0x6E0F); // movd mm, m32
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
}
|
||||
else {
|
||||
// movd mm, r32 - r32->mmxtmp->mm
|
||||
@@ -75,11 +75,11 @@ void dyn_mmx_movd_pqed() {
|
||||
// move from genreg to mmxtmp
|
||||
cache_addb(0x89); // mov m32, r32
|
||||
cache_addb(0x05 | (gr->index << 3));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
// mmxtmp contains loaded value - finish by loading it to mm
|
||||
cache_addw(0x6E0F); // movd mm, m32
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ void dyn_mmx_movq_pqqq() {
|
||||
// mmxtmp contains loaded value - finish by loading it to mm
|
||||
cache_addw(0x6F0F); // movq mm, m64
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
}
|
||||
else {
|
||||
// movq mm, mm
|
||||
@@ -114,7 +114,7 @@ void dyn_mmx_movd_edpq() {
|
||||
// fill mmxtmp
|
||||
cache_addw(0x7E0F); // movd mm, m32
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
// generate call to mmxtmp store
|
||||
gen_call_function((void*)&MMX_STORE_32, "%Ddr", DREG(EA));
|
||||
}
|
||||
@@ -127,11 +127,11 @@ void dyn_mmx_movd_edpq() {
|
||||
// fill mmxtmp
|
||||
cache_addw(0x7E0F); // movd mm, m32
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
// move from mmxtmp to genreg
|
||||
cache_addb(0x8b); // mov r32, m32
|
||||
cache_addb(0x05 | (gr->index << 3));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
// mark dynreg as changed
|
||||
reg->flags |= DYNFLG_CHANGED;
|
||||
}
|
||||
@@ -147,7 +147,7 @@ void dyn_mmx_movq_qqpq() {
|
||||
// fill mmxtmp
|
||||
cache_addw(0x7F0F); // movq mm, m64
|
||||
cache_addb(0x05 | (decode.modrm.val & 0x38));
|
||||
cache_addd((Bit32u)&mmxtmp);
|
||||
cache_addd((uintptr_t)&mmxtmp);
|
||||
// generate call to mmxtmp store
|
||||
gen_call_function((void*)&MMX_STORE_64, "%Ddr", DREG(EA));
|
||||
}
|
||||
|
@@ -57,7 +57,7 @@ public:
|
||||
dynreg->genreg=this;
|
||||
if ((!stale) && (dynreg->flags & (DYNFLG_LOAD|DYNFLG_ACTIVE))) {
|
||||
cache_addw(0x058b+(index << (8+3))); //Mov reg,[data]
|
||||
cache_addd((Bit32u)dynreg->data);
|
||||
cache_addd((uintptr_t)dynreg->data);
|
||||
}
|
||||
dynreg->flags|=DYNFLG_ACTIVE;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
if (GCC_UNLIKELY(!((Bitu)dynreg))) IllegalOption("GenReg->Save");
|
||||
dynreg->flags&=~DYNFLG_CHANGED;
|
||||
cache_addw(0x0589+(index << (8+3))); //Mov [data],reg
|
||||
cache_addd((Bit32u)dynreg->data);
|
||||
cache_addd((uintptr_t)dynreg->data);
|
||||
}
|
||||
void Release(void) {
|
||||
if (GCC_UNLIKELY(!((Bitu)dynreg))) return;
|
||||
@@ -305,7 +305,7 @@ static void gen_load_host(void * data,DynReg * dr1,Bitu size) {
|
||||
IllegalOption("gen_load_host");
|
||||
}
|
||||
cache_addb(0x5+(gr1->index<<3));
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
dr1->flags|=DYNFLG_CHANGED;
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ static void gen_mov_host(void * data,DynReg * dr1,Bitu size,Bit8u di1=0) {
|
||||
IllegalOption("gen_load_host");
|
||||
}
|
||||
cache_addb(0x5+((gr1->index+(di1?4:0))<<3));
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
dr1->flags|=DYNFLG_CHANGED;
|
||||
}
|
||||
|
||||
@@ -393,7 +393,7 @@ static void gen_dop_byte_imm_mem(DualOps op,DynReg * dr1,Bit8u di1,void* data) {
|
||||
dr1->flags|=DYNFLG_CHANGED;
|
||||
nochange:
|
||||
cache_addw(tmp+((gr1->index+di1)<<11));
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
}
|
||||
|
||||
static void gen_sop_byte(SingleOps op,DynReg * dr1,Bit8u di1) {
|
||||
@@ -481,7 +481,7 @@ static void gen_lea_imm_mem(DynReg * ddr,DynReg * dsr,void* data) {
|
||||
GenReg * gdr=FindDynReg(ddr);
|
||||
Bit8u rm_base=(gdr->index << 3);
|
||||
cache_addw(0x058b+(rm_base<<8));
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
GenReg * gsr=FindDynReg(dsr);
|
||||
cache_addb(0x8d); //LEA
|
||||
cache_addb(rm_base+0x44);
|
||||
@@ -574,7 +574,7 @@ static void gen_dop_word_imm_mem(DualOps op,bool dword,DynReg * dr1,void* data)
|
||||
nochange:
|
||||
if (!dword) cache_addb(0x66);
|
||||
cache_addw(tmp+(gr1->index<<11));
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
}
|
||||
|
||||
static void gen_dop_word_var(DualOps op,bool dword,DynReg * dr1,void* drd) {
|
||||
@@ -597,7 +597,7 @@ static void gen_dop_word_var(DualOps op,bool dword,DynReg * dr1,void* drd) {
|
||||
}
|
||||
if (!dword) cache_addb(0x66);
|
||||
cache_addw(tmp|(0x05+((gr1->index)<<3))<<8);
|
||||
cache_addd((Bit32u)drd);
|
||||
cache_addd((uintptr_t)drd);
|
||||
}
|
||||
|
||||
static void gen_imul_word(bool dword,DynReg * dr1,DynReg * dr2) {
|
||||
@@ -866,7 +866,7 @@ static void gen_call_function(void * func,char const* ops,...) {
|
||||
x86gen.regs[X86_REG_EDX]->Clear();
|
||||
/* Do the actual call to the procedure */
|
||||
cache_addb(0xe8);
|
||||
cache_addd((Bit32u)func - (Bit32u)cache.pos-4);
|
||||
cache_addd((uintptr_t)func - (uintptr_t)cache.pos - (uintptr_t)4);
|
||||
/* Restore the params of the stack */
|
||||
if (paramcount) {
|
||||
cache_addw(0xc483); //add ESP,imm byte
|
||||
@@ -938,9 +938,9 @@ static void gen_call_write(DynReg * dr,Bit32u val,Bitu write_size) {
|
||||
/* Do the actual call to the procedure */
|
||||
cache_addb(0xe8);
|
||||
switch (write_size) {
|
||||
case 1: cache_addd((Bit32u)mem_writeb_checked - (Bit32u)cache.pos-4); break;
|
||||
case 2: cache_addd((Bit32u)mem_writew_checked - (Bit32u)cache.pos-4); break;
|
||||
case 4: cache_addd((Bit32u)mem_writed_checked - (Bit32u)cache.pos-4); break;
|
||||
case 1: cache_addd((uintptr_t)mem_writeb_checked - (uintptr_t)cache.pos - (uintptr_t)4); break;
|
||||
case 2: cache_addd((uintptr_t)mem_writew_checked - (uintptr_t)cache.pos - (uintptr_t)4); break;
|
||||
case 4: cache_addd((uintptr_t)mem_writed_checked - (uintptr_t)cache.pos - (uintptr_t)4); break;
|
||||
default: IllegalOption("gen_call_write");
|
||||
}
|
||||
|
||||
@@ -994,7 +994,7 @@ static void gen_fill_jump(Bit8u * data,Bit8u * to=cache.pos) {
|
||||
|
||||
static void gen_jmp_ptr(void * ptr,Bits imm=0) {
|
||||
cache_addb(0xa1);
|
||||
cache_addd((Bit32u)ptr);
|
||||
cache_addd((uintptr_t)ptr);
|
||||
cache_addb(0xff); //JMP EA
|
||||
if (!imm) { //NO EBP
|
||||
cache_addb(0x20);
|
||||
@@ -1025,7 +1025,7 @@ static void gen_load_flags(DynReg * dynreg) {
|
||||
|
||||
static void gen_save_host_direct(void * data,Bits imm) {
|
||||
cache_addw(0x05c7); //MOV [],dword
|
||||
cache_addd((Bit32u)data);
|
||||
cache_addd((uintptr_t)data);
|
||||
cache_addd(imm);
|
||||
}
|
||||
|
||||
@@ -1043,7 +1043,7 @@ static void gen_return(BlockReturn retcode) {
|
||||
static void gen_return_fast(BlockReturn retcode,bool ret_exception=false) {
|
||||
if (GCC_UNLIKELY(x86gen.flagsactive)) IllegalOption("gen_return_fast");
|
||||
cache_addw(0x0d8b); //MOV ECX, the flags
|
||||
cache_addd((Bit32u)&cpu_regs.flags);
|
||||
cache_addd((uintptr_t)&cpu_regs.flags);
|
||||
if (!ret_exception) {
|
||||
cache_addw(0xc483); //ADD ESP,4
|
||||
cache_addb(0x4);
|
||||
|
Reference in New Issue
Block a user