80 static const char *x86emu_GenOpName[8] = {
81 "ADD",
"OR",
"ADC",
"SBB",
"AND",
"SUB",
"XOR",
"CMP"};
162 static const char *opF6_names[8] =
163 {
"TEST\t",
"",
"NOT\t",
"NEG\t",
"MUL\t",
"IMUL\t",
"DIV\t",
"IDIV\t" };
178 if (
M.x86.R_SP != 0) {
181 DB(
printf(
"%04x:%04x: %02X ILLEGAL X86 OPCODE!\n",
182 M.x86.R_CS,
M.x86.R_IP-1,op1));
205 u8 *destreg, *srcreg;
208 op1 = (op1 >> 3) & 0x7;
247 op1 = (op1 >> 3) & 0x7;
283 u32 *destreg, *srcreg;
292 u16 *destreg, *srcreg;
313 u8 *destreg, *srcreg;
317 op1 = (op1 >> 3) & 0x7;
350 u32 *destreg32, srcval;
353 op1 = (op1 >> 3) & 0x7;
407 op1 = (op1 >> 3) & 0x7;
428 op1 = (op1 >> 3) & 0x7;
499 u8 op2 = (*sys_rdb)(((
u32)
M.x86.R_CS << 4) + (
M.x86.R_IP++));
793 u32 old_sp =
M.x86.R_ESP;
804 u16 old_sp =
M.x86.R_SP;
972 if ((((res_lo & 0x80000000) == 0) && (res_hi == 0x00000000)) ||
973 (((res_lo & 0x80000000) != 0) && (res_hi == 0xFFFFFFFF))) {
980 *destreg = (
u32)res_lo;
993 res = (
s16)srcval * (
s16)imm;
994 if ((((res & 0x8000) == 0) && ((res >> 16) == 0x0000)) ||
995 (((res & 0x8000) != 0) && ((res >> 16) == 0xFFFF))) {
1002 *destreg = (
u16)res;
1006 u32 *destreg,*srcreg;
1017 if ((((res_lo & 0x80000000) == 0) && (res_hi == 0x00000000)) ||
1018 (((res_lo & 0x80000000) != 0) && (res_hi == 0xFFFFFFFF))) {
1025 *destreg = (
u32)res_lo;
1027 u16 *destreg,*srcreg;
1036 res = (
s16)*srcreg * (
s16)imm;
1037 if ((((res & 0x8000) == 0) && ((res >> 16) == 0x0000)) ||
1038 (((res & 0x8000) != 0) && ((res >> 16) == 0xFFFF))) {
1045 *destreg = (
u16)res;
1100 if ((((res_lo & 0x80000000) == 0) && (res_hi == 0x00000000)) ||
1101 (((res_lo & 0x80000000) != 0) && (res_hi == 0xFFFFFFFF))) {
1108 *destreg = (
u32)res_lo;
1120 res = (
s16)srcval * (
s16)imm;
1121 if ((((res & 0x8000) == 0) && ((res >> 16) == 0x0000)) ||
1122 (((res & 0x8000) != 0) && ((res >> 16) == 0xFFFF))) {
1129 *destreg = (
u16)res;
1133 u32 *destreg,*srcreg;
1143 if ((((res_lo & 0x80000000) == 0) && (res_hi == 0x00000000)) ||
1144 (((res_lo & 0x80000000) != 0) && (res_hi == 0xFFFFFFFF))) {
1151 *destreg = (
u32)res_lo;
1153 u16 *destreg,*srcreg;
1162 res = (
s16)*srcreg * (
s16)imm;
1163 if ((((res & 0x8000) == 0) && ((res >> 16) == 0x0000)) ||
1164 (((res & 0x8000) != 0) && ((res >> 16) == 0xFFFF))) {
1171 *destreg = (
u16)res;
1262 M.x86.R_IP = target;
1263 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
" NEAR COND ");
1639 u8 *destreg, *srcreg;
1703 u32 *destreg,*srcreg;
1712 u16 *destreg,*srcreg;
1733 u8 *destreg, *srcreg;
1808 u32 *destreg,*srcreg;
1820 u16 *destreg,*srcreg;
1844 u8 *destreg, *srcreg;
1902 u32 *destreg,*srcreg;
1911 u16 *destreg,*srcreg;
1932 u8 *destreg, *srcreg;
1997 u32 *destreg, *srcreg;
2006 u16 *destreg, *srcreg;
2027 u16 *destreg, *srcreg;
2073 *srcreg = (
u32)destoffset;
2080 *srcreg = (
u16)destoffset;
2095 u16 *destreg, *srcreg;
2214 M.x86.R_EAX = *reg32;
2223 M.x86.R_AX = *reg16;
2244 if (
M.x86.R_AX & 0x8000) {
2245 M.x86.R_EAX |= 0xffff0000;
2247 M.x86.R_EAX &= 0x0000ffff;
2250 if (
M.x86.R_AL & 0x80) {
2275 if (
M.x86.R_EAX & 0x80000000) {
2276 M.x86.R_EDX = 0xffffffff;
2281 if (
M.x86.R_AX & 0x8000) {
2282 M.x86.R_DX = 0xffff;
2310 CALL_TRACE(
M.x86.saved_cs,
M.x86.saved_ip, farseg, faroff,
"FAR ");
2320 M.x86.R_CS = farseg;
2326 M.x86.R_EIP = faroff & 0xffff;
2404 M.x86.R_FLG &= 0xffffff00;
2406 M.x86.R_FLG |=
M.x86.R_AH;
2420 M.x86.R_AH = (
u8)(
M.x86.R_FLG & 0xff);
3116 *reg16 = (
u16)srcval;
3314 RETURN_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
"NEAR");
3330 RETURN_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
"NEAR");
3493 u16 local,frame_pointer;
3504 frame_pointer =
M.x86.R_SP;
3506 for (i = 1; i < nesting; i++) {
3512 M.x86.R_BP = frame_pointer;
3513 M.x86.R_SP = (
u16)(
M.x86.R_SP - local);
3527 M.x86.R_SP =
M.x86.R_BP;
3548 RETURN_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
"FAR");
3565 RETURN_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
"FAR");
4091 ip += (
s16)
M.x86.R_IP;
4115 ip += (
s16)
M.x86.R_IP;
4139 ip += (
s16)
M.x86.R_IP;
4168 if (
M.x86.R_CX == 0) {
4169 M.x86.R_IP = target;
4170 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS,
M.x86.R_IP,
" CXZ ");
4189 M.x86.R_AL = (*sys_inb)(
port);
4212 M.x86.R_EAX = (*sys_inl)(
port);
4214 M.x86.R_AX = (*sys_inw)(
port);
4233 (*sys_outb)(
port,
M.x86.R_AL);
4256 (*sys_outl)(
port,
M.x86.R_EAX);
4258 (*sys_outw)(
port,
M.x86.R_AX);
4277 ip32 += (
s16)
M.x86.R_IP;
4279 CALL_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, ip32,
"");
4282 ip16 += (
s16)
M.x86.R_IP;
4284 CALL_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, ip16,
"");
4289 M.x86.R_EIP = ip32 & 0xffff;
4310 ip += (
u32)
M.x86.R_EIP;
4312 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, ip,
" NEAR ");
4314 M.x86.R_EIP = (
u32)ip;
4317 ip += (
s16)
M.x86.R_IP;
4319 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, ip,
" NEAR ");
4321 M.x86.R_IP = (
u16)ip;
4346 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip, cs, ip,
" FAR ");
4348 M.x86.R_EIP = ip & 0xffff;
4368 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, target,
" BYTE ");
4370 M.x86.R_IP = target;
4384 M.x86.R_AL = (*sys_inb)(
M.x86.R_DX);
4403 M.x86.R_EAX = (*sys_inl)(
M.x86.R_DX);
4405 M.x86.R_AX = (*sys_inw)(
M.x86.R_DX);
4420 (*sys_outb)(
M.x86.R_DX,
M.x86.R_AL);
4439 (*sys_outl)(
M.x86.R_DX,
M.x86.R_EAX);
4441 (*sys_outw)(
M.x86.R_DX,
M.x86.R_AX);
4654 u32 destval, srcval;
4706 u16 destval, srcval;
5026 uint destoffset = 0;
5029 u16 destval,destval2;
5113 M.x86.R_IP = destval;
5120 M.x86.R_CS = destval2;
5122 M.x86.R_IP = destval;
5126 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip,
M.x86.R_CS, destval,
" WORD ");
5128 M.x86.R_IP = destval;
5133 JMP_TRACE(
M.x86.saved_cs,
M.x86.saved_ip, destval2, destval,
" FAR ");
5135 M.x86.R_IP = destval;
5136 M.x86.R_CS = destval2;
5183 M.x86.R_IP = *destreg;
5195 M.x86.R_IP = (
u16) (*destreg);
unsigned int decode_rmXX_address(int mod, int rm)
u16 fetch_data_word_abs(uint segment, uint offset)
u16 fetch_data_word(uint offset)
u8 fetch_data_byte_abs(uint segment, uint offset)
void store_data_byte(uint offset, u8 val)
void store_data_word_abs(uint segment, uint offset, u16 val)
u16 * decode_rm_seg_register(int reg)
void store_data_byte_abs(uint segment, uint offset, u8 val)
void store_data_long_abs(uint segment, uint offset, u32 val)
u8 fetch_data_byte(uint offset)
void store_data_long(uint offset, u32 val)
u32 fetch_data_long_abs(uint segment, uint offset)
void store_data_word(uint offset, u16 val)
u32 fetch_data_long(uint offset)
#define DECODE_RM_BYTE_REGISTER(r)
#define FETCH_DECODE_MODRM(mod, rh, rl)
#define DECODE_RM_WORD_REGISTER(r)
#define DECODE_RM_LONG_REGISTER(r)
#define DECODE_CLEAR_SEGOVR()
#define RETURN_TRACE(u, v, w, x, s)
#define JMP_TRACE(u, v, w, x, s)
#define CALL_TRACE(u, v, w, x, s)
#define INC_DECODED_INST_LEN(x)
#define DECODE_PRINTF2(x, y)
void x86emuOp_esc_coprocess_df(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1))
void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1))
static void x86emuOp_outs_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_genop_byte_RM_R(u8 op1)
static void x86emuOp_aas(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_CS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_SR_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_stos_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pushf_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_aaa(u8 X86EMU_UNUSED(op1))
static void x86emuOp_genop_byte_AL_IMM(u8 op1)
static void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_scas_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_all(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ret_near_IMM(u8 X86EMU_UNUSED(op1))
static u32(* genop_long_operation[])(u32 d, u32 s)
static void x86emuOp_out_word_IMM_AX(u8 X86EMU_UNUSED(op1))
static void x86emuOp_leave(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcFE_byte_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_prefix_addr(u8 X86EMU_UNUSED(op1))
static void x86emuOp_loope(u8 X86EMU_UNUSED(op1))
static void x86emuOp_aam(u8 X86EMU_UNUSED(op1))
static void x86emuOp_test_byte_RM_R(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ins_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_int3(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcF6_byte_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cmps_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cli(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ret_near(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_word_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_SS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lods_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_R_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_two_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_AX_M_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opc81_word_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_xchg_word_RM_R(u8 X86EMU_UNUSED(op1))
static u8(* opcD0_byte_operation[])(u8 d, u8 s)
static void x86emuOp_genop_word_RM_R(u8 op1)
static void x86emuOp_xchg_word_AX_register(u8 X86EMU_UNUSED(op1))
static void x86emuOp_imul_word_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_aad(u8 X86EMU_UNUSED(op1))
static void x86emuOp_das(u8 X86EMU_UNUSED(op1))
static void x86emuOp_segovr_GS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_register(u8 op1)
static void x86emuOp_repe(u8 X86EMU_UNUSED(op1))
static void x86emuOp_les_R_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_out_word_DX_AX(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_ES(u8 X86EMU_UNUSED(op1))
static void x86emuOp_segovr_FS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_in_byte_AL_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opc82_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_halt(u8 X86EMU_UNUSED(op1))
static void x86emuOp_dec_register(u8 op1)
static void x86emuOp_segovr_SS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_out_byte_DX_AL(u8 X86EMU_UNUSED(op1))
void(* x86emu_optab[256])(u8)
static void x86emuOp_movs_byte(u8 X86EMU_UNUSED(op1))
static void x86emuOp_jump_byte_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcD3_word_RM_CL(u8 X86EMU_UNUSED(op1))
static void x86emuOp_repne(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_register_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_byte_RM_R(u8 X86EMU_UNUSED(op1))
static void x86emuOp_jump_far_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cwd(u8 X86EMU_UNUSED(op1))
static void x86emuOp_segovr_ES(u8 X86EMU_UNUSED(op1))
static void x86emuOp_segovr_CS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_stos_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_loopne(u8 X86EMU_UNUSED(op1))
static void x86emuOp_jcxz(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcD1_word_RM_1(u8 X86EMU_UNUSED(op1))
static void x86emuOp_genop_byte_R_RM(u8 op1)
static void x86emuOp_out_byte_IMM_AL(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_DS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cmps_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ins_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_illegal_op(u8 op1)
static u16(* opcD1_word_operation[])(u16 s, u8 d)
static void x86emuOp_iret(u8 X86EMU_UNUSED(op1))
static void x86emuOp_in_word_AX_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cmc(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lock(u8 X86EMU_UNUSED(op1))
static void x86emuOp_sahf(u8 X86EMU_UNUSED(op1))
static void x86emuOp_test_AX_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_ES(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_DS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ret_far(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_AL_M_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_imul_byte_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_into(u8 X86EMU_UNUSED(op1))
static u32(* opcD1_long_operation[])(u32 s, u8 d)
static void x86emuOp_opcD0_byte_RM_1(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcC0_byte_RM_MEM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_all(u8 X86EMU_UNUSED(op1))
static void x86emuOp_push_byte_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_xchg_byte_RM_R(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lahf(u8 X86EMU_UNUSED(op1))
static void x86emuOp_loop(u8 X86EMU_UNUSED(op1))
static void x86emuOp_xlat(u8 X86EMU_UNUSED(op1))
static void x86emuOp_nop(u8 X86EMU_UNUSED(op1))
static u16(* genop_word_operation[])(u16 d, u16 s)
static void x86emuOp_prefix_data(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcD2_byte_RM_CL(u8 X86EMU_UNUSED(op1))
static void x86emuOp_test_AL_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_outs_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lods_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_wait(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lds_R_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_RM_R(u8 X86EMU_UNUSED(op1))
static void x86emuOp_test_word_RM_R(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_SS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_byte_R_RM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cld(u8 X86EMU_UNUSED(op1))
static void x86emuOp_lea_word_R_M(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_M_AL_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_enter(u8 X86EMU_UNUSED(op1))
static void x86emuOp_daa(u8 X86EMU_UNUSED(op1))
static void x86emuOp_call_far_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_M_AX_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_genop_word_R_RM(u8 op1)
static void x86emuOp_std(u8 X86EMU_UNUSED(op1))
static void x86emuOp_popf_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_in_byte_AL_DX(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opc80_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_stc(u8 X86EMU_UNUSED(op1))
static void x86emuOp_inc_register(u8 op1)
static u8(* genop_byte_operation[])(u8 d, u8 s)
static void x86emuOp_jump_near_cond(u8 op1)
static void x86emuOp_opc83_word_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_segovr_DS(u8 X86EMU_UNUSED(op1))
static void x86emuOp_scas_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_cbw(u8 X86EMU_UNUSED(op1))
static void x86emuOp_opcC1_word_RM_MEM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_RM_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_pop_register(u8 op1)
static void x86emuOp_clc(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_word_RM_SR(u8 X86EMU_UNUSED(op1))
static void x86emuOp_mov_byte_register_IMM(u8 op1)
static void x86emuOp_movs_word(u8 X86EMU_UNUSED(op1))
static void x86emuOp_genop_word_AX_IMM(u8 op1)
static void x86emuOp_call_near_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_ret_far_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_sti(u8 X86EMU_UNUSED(op1))
static void x86emuOp_jump_near_IMM(u8 X86EMU_UNUSED(op1))
static void x86emuOp_in_word_AX_DX(u8 X86EMU_UNUSED(op1))
void(* x86emu_optab2[0x100])(u8 op2)
int x86emu_check_jump_condition(u8 op)
void test_byte(u8 d, u8 s)
u16 shl_word(u16 d, u8 s)
u16 ror_word(u16 d, u8 s)
u32 shr_long(u32 d, u8 s)
u16 sub_word(u16 d, u16 s)
u16 sar_word(u16 d, u8 s)
u16 adc_word(u16 d, u16 s)
u32 rcl_long(u32 d, u8 s)
u32 cmp_long(u32 d, u32 s)
u16 cmp_word(u16 d, u16 s)
u32 add_long(u32 d, u32 s)
u32 sbb_long(u32 d, u32 s)
u16 shr_word(u16 d, u8 s)
u32 sar_long(u32 d, u8 s)
u32 ror_long(u32 d, u8 s)
u16 or_word(u16 d, u16 s)
u32 rol_long(u32 d, u8 s)
u16 mem_access_word(int addr)
u32 or_long(u32 d, u32 s)
void test_long(u32 d, u32 s)
u16 sbb_word(u16 d, u16 s)
u16 rol_word(u16 d, u8 s)
u16 and_word(u16 d, u16 s)
u32 rcr_long(u32 d, u8 s)
u16 rcr_word(u16 d, u8 s)
u32 sub_long(u32 d, u32 s)
u32 shl_long(u32 d, u8 s)
void imul_long_direct(u32 *res_lo, u32 *res_hi, u32 d, u32 s)
u32 xor_long(u32 d, u32 s)
u32 adc_long(u32 d, u32 s)
u16 xor_word(u16 d, u16 s)
u16 add_word(u16 d, u16 s)
u16 rcl_word(u16 d, u8 s)
u32 and_long(u32 d, u32 s)
void test_word(u16 d, u16 s)
#define SYSMODE_SEGOVR_GS
#define SYSMODE_PREFIX_REPE
#define SYSMODE_PREFIX_DATA
#define SYSMODE_SEGOVR_ES
#define SYSMODE_SEGOVR_DS
#define SYSMODE_SEGOVR_SS
#define TOGGLE_FLAG(flag)
#define SYSMODE_SEGOVR_CS
#define SYSMODE_PREFIX_ADDR
#define SYSMODE_32BIT_REP
#define SYSMODE_SEGOVR_FS
#define SYSMODE_PREFIX_REPNE
#define ACCESS_FLAG(flag)
#define s(param, src_bits, pmcreg, dst_bits)
X86EMU_intrFuncs _X86EMU_intrTab[256]
void X86EMU_halt_sys(void)
typedef void(X86APIP X86EMU_intrFuncs)(int num)