Added recompiled versions of MOV seg, POP seg, PUSH FS/GS, LDS,LES,LFS,LGS,LSS.
This commit is contained in:
parent
6131d9b7d9
commit
d729fc8297
5 changed files with 262 additions and 12 deletions
|
|
@ -1105,6 +1105,13 @@ static void MEM_LOAD_ADDR_EA_W(x86seg *seg)
|
|||
addlong(BLOCK_EXIT_OFFSET - (block_pos + 4));
|
||||
/*done:*/
|
||||
}
|
||||
static void MEM_LOAD_ADDR_EA_W_OFFSET(x86seg *seg, int offset)
|
||||
{
|
||||
addbyte(0x83); /*ADD EAX, offset*/
|
||||
addbyte(0xc0);
|
||||
addbyte(offset);
|
||||
MEM_LOAD_ADDR_EA_W(seg);
|
||||
}
|
||||
static void MEM_LOAD_ADDR_EA_L(x86seg *seg)
|
||||
{
|
||||
if (IS_32_ADDR(&seg->base))
|
||||
|
|
@ -3346,6 +3353,10 @@ static int LOAD_VAR_W(uintptr_t addr)
|
|||
|
||||
return host_reg;
|
||||
}
|
||||
static int LOAD_VAR_WL(uintptr_t addr)
|
||||
{
|
||||
return LOAD_VAR_W(addr);
|
||||
}
|
||||
static int LOAD_VAR_L(uintptr_t addr)
|
||||
{
|
||||
int host_reg = REG_EBX;
|
||||
|
|
@ -5982,3 +5993,17 @@ static void MEM_STORE_ADDR_EA_L_NO_ABRT(x86seg *seg, int host_reg)
|
|||
call_long(writememll);
|
||||
/*done:*/
|
||||
}
|
||||
|
||||
static void LOAD_SEG(int host_reg, void *seg)
|
||||
{
|
||||
load_param_2_64(&codeblock[block_current], (uint64_t)seg);
|
||||
load_param_1_reg_32(host_reg);
|
||||
CALL_FUNC(loadseg);
|
||||
addbyte(0x80); /*CMP abrt, 0*/
|
||||
addbyte(0x7d);
|
||||
addbyte(cpu_state_offset(abrt));
|
||||
addbyte(0);
|
||||
addbyte(0x0f); /*JNE end*/
|
||||
addbyte(0x85);
|
||||
addlong(BLOCK_EXIT_OFFSET - (block_pos + 4));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue