--- np2/i386c/ia32/resolve.c 2003/12/22 18:00:31 1.2 +++ np2/i386c/ia32/resolve.c 2004/01/23 14:33:26 1.4 @@ -1,4 +1,4 @@ -/* $Id: resolve.c,v 1.2 2003/12/22 18:00:31 monaka Exp $ */ +/* $Id: resolve.c,v 1.4 2004/01/23 14:33:26 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -71,8 +71,6 @@ static DWORD ea_bx_si(void) { - PROFILE_INC_EA16(0); - CPU_INST_SEGREG_INDEX = DS_FIX; return (CPU_BX + CPU_SI); } @@ -82,8 +80,6 @@ ea_bx_si_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(1); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX + CPU_SI); @@ -94,8 +90,6 @@ ea_bx_si_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(2); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX + CPU_SI); @@ -105,8 +99,6 @@ static DWORD ea_bx_di(void) { - PROFILE_INC_EA16(3); - CPU_INST_SEGREG_INDEX = DS_FIX; return (CPU_BX + CPU_DI); } @@ -116,8 +108,6 @@ ea_bx_di_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(4); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX + CPU_DI); @@ -128,8 +118,6 @@ ea_bx_di_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(5); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX + CPU_DI); @@ -139,8 +127,6 @@ static DWORD ea_bp_si(void) { - PROFILE_INC_EA16(6); - CPU_INST_SEGREG_INDEX = SS_FIX; return (CPU_BP + CPU_SI); } @@ -150,8 +136,6 @@ ea_bp_si_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(7); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP + CPU_SI); @@ -162,8 +146,6 @@ ea_bp_si_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(8); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP + CPU_SI); @@ -173,8 +155,6 @@ static DWORD ea_bp_di(void) { - PROFILE_INC_EA16(9); - CPU_INST_SEGREG_INDEX = SS_FIX; return (CPU_BP + CPU_DI); } @@ -184,8 +164,6 @@ ea_bp_di_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(10); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP + CPU_DI); @@ -196,8 +174,6 @@ ea_bp_di_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(11); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP + CPU_DI); @@ -207,8 +183,6 @@ static DWORD ea_si(void) { - PROFILE_INC_EA16(12); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_SI; } @@ -218,8 +192,6 @@ ea_si_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(13); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_SI); @@ -230,8 +202,6 @@ ea_si_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(14); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_SI); @@ -241,8 +211,6 @@ static DWORD ea_di(void) { - PROFILE_INC_EA16(15); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_DI; } @@ -252,8 +220,6 @@ ea_di_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(16); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_DI); @@ -264,8 +230,6 @@ ea_di_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(17); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_DI); @@ -276,8 +240,6 @@ ea_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(18); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs; @@ -288,8 +250,6 @@ ea_bp_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(19); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP); @@ -300,8 +260,6 @@ ea_bp_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(20); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return (adrs + CPU_BP); @@ -311,8 +269,6 @@ static DWORD ea_bx(void) { - PROFILE_INC_EA16(21); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_BX; } @@ -322,8 +278,6 @@ ea_bx_disp8(void) { SDWORD adrs; - PROFILE_INC_EA16(22); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX); @@ -334,8 +288,6 @@ ea_bx_disp16(void) { DWORD adrs; - PROFILE_INC_EA16(23); - GET_PCWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return (adrs + CPU_BX); @@ -367,8 +319,6 @@ static DWORD ea32_eax(void) { - PROFILE_INC_EA32(0); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_EAX; } @@ -377,8 +327,6 @@ static DWORD ea32_ecx(void) { - PROFILE_INC_EA32(1); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_ECX; } @@ -387,8 +335,6 @@ static DWORD ea32_edx(void) { - PROFILE_INC_EA32(2); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_EDX; } @@ -397,8 +343,6 @@ static DWORD ea32_ebx(void) { - PROFILE_INC_EA32(3); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_EBX; } @@ -409,14 +353,11 @@ ea32_sib(void) DWORD op, dst; DWORD base, idx, scale; - PROFILE_INC_EA32(4); - GET_PCBYTE(op); - dst = 0; /* compiler happy */ - base = op & 7; idx = (op >> 3) & 7; scale = (op >> 6) & 3; + switch (base) { case 0: case 1: case 2: case 3: case 6: case 7: CPU_INST_SEGREG_INDEX = DS_FIX; @@ -432,10 +373,14 @@ ea32_sib(void) CPU_INST_SEGREG_INDEX = DS_FIX; GET_PCDWORD(dst); break; + + default: + dst = 0; /* compiler happy */ + ia32_panic("ea32_sib: invalid base = %d", base); + break; } if (idx != 4) dst += CPU_REGS_DWORD(idx) << scale; - PROFILE_INC_SIB0(op); return dst; } @@ -444,8 +389,6 @@ ea32_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(5); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs; @@ -455,8 +398,6 @@ static DWORD ea32_esi(void) { - PROFILE_INC_EA32(6); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_ESI; } @@ -465,8 +406,6 @@ static DWORD ea32_edi(void) { - PROFILE_INC_EA32(7); - CPU_INST_SEGREG_INDEX = DS_FIX; return CPU_EDI; } @@ -476,8 +415,6 @@ ea32_eax_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(8); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EAX; @@ -488,8 +425,6 @@ ea32_ecx_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(9); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_ECX; @@ -500,8 +435,6 @@ ea32_edx_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(10); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EDX; @@ -512,8 +445,6 @@ ea32_ebx_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(11); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EBX; @@ -526,14 +457,13 @@ ea32_sib_disp8(void) DWORD op; DWORD base, idx, scale; - PROFILE_INC_EA32(12); - GET_PCBYTE(op); - GET_PCBYTESD(adrs); - base = op & 7; idx = (op >> 3) & 7; scale = (op >> 6) & 3; + + GET_PCBYTESD(adrs); + switch (base) { case 0: case 1: case 2: case 3: case 6: case 7: CPU_INST_SEGREG_INDEX = DS_FIX; @@ -545,7 +475,6 @@ ea32_sib_disp8(void) } if (idx != 4) adrs += CPU_REGS_DWORD(idx) << scale; - PROFILE_INC_SIB1(op); return CPU_REGS_DWORD(base) + adrs; } @@ -554,8 +483,6 @@ ea32_ebp_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(13); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return adrs + CPU_EBP; @@ -566,8 +493,6 @@ ea32_esi_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(14); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_ESI; @@ -578,8 +503,6 @@ ea32_edi_disp8(void) { SDWORD adrs; - PROFILE_INC_EA32(15); - GET_PCBYTESD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EDI; @@ -590,8 +513,6 @@ ea32_eax_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(16); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EAX; @@ -602,8 +523,6 @@ ea32_ecx_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(17); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_ECX; @@ -614,8 +533,6 @@ ea32_edx_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(18); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EDX; @@ -626,8 +543,6 @@ ea32_ebx_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(19); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EBX; @@ -640,14 +555,13 @@ ea32_sib_disp32(void) DWORD op; DWORD base, idx, scale; - PROFILE_INC_EA32(20); - GET_PCBYTE(op); - GET_PCDWORD(adrs); - base = op & 7; idx = (op >> 3) & 7; scale = (op >> 6) & 3; + + GET_PCDWORD(adrs); + switch (base) { case 0: case 1: case 2: case 3: case 6: case 7: CPU_INST_SEGREG_INDEX = DS_FIX; @@ -659,7 +573,6 @@ ea32_sib_disp32(void) } if (idx != 4) adrs += CPU_REGS_DWORD(idx) << scale; - PROFILE_INC_SIB2(op); return CPU_REGS_DWORD(base) + adrs; } @@ -668,8 +581,6 @@ ea32_ebp_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(21); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = SS_FIX; return adrs + CPU_EBP; @@ -680,8 +591,6 @@ ea32_esi_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(22); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_ESI; @@ -692,8 +601,6 @@ ea32_edi_disp32(void) { DWORD adrs; - PROFILE_INC_EA32(23); - GET_PCDWORD(adrs); CPU_INST_SEGREG_INDEX = DS_FIX; return adrs + CPU_EDI;