Diff for /np2/i386c/ia32/resolve.c between versions 1.1 and 1.2

version 1.1, 2003/12/08 00:55:31 version 1.2, 2003/12/22 18:00:31
Line 40  DWORD Line 40  DWORD
 calc_ea_dst(DWORD op)  calc_ea_dst(DWORD op)
 {  {
   
           __ASSERT(op < 0x100);
   
         if (!CPU_INST_AS32)          if (!CPU_INST_AS32)
                 return ((*calc_ea_dst_tbl[op])() & 0xffff);                  return ((*calc_ea_dst_tbl[op])() & 0xffff);
         return (*calc_ea32_dst_tbl[op])();          return (*calc_ea32_dst_tbl[op])();
Line 69  static DWORD Line 71  static DWORD
 ea_bx_si(void)  ea_bx_si(void)
 {  {
   
           PROFILE_INC_EA16(0);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (CPU_BX + CPU_SI);          return (CPU_BX + CPU_SI);
 }  }
Line 78  ea_bx_si_disp8(void) Line 82  ea_bx_si_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(1);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX + CPU_SI);          return (adrs + CPU_BX + CPU_SI);
Line 88  ea_bx_si_disp16(void) Line 94  ea_bx_si_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(2);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX + CPU_SI);          return (adrs + CPU_BX + CPU_SI);
Line 97  static DWORD Line 105  static DWORD
 ea_bx_di(void)  ea_bx_di(void)
 {  {
   
           PROFILE_INC_EA16(3);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (CPU_BX + CPU_DI);          return (CPU_BX + CPU_DI);
 }  }
Line 106  ea_bx_di_disp8(void) Line 116  ea_bx_di_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(4);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX + CPU_DI);          return (adrs + CPU_BX + CPU_DI);
Line 116  ea_bx_di_disp16(void) Line 128  ea_bx_di_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(5);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX + CPU_DI);          return (adrs + CPU_BX + CPU_DI);
Line 125  static DWORD Line 139  static DWORD
 ea_bp_si(void)  ea_bp_si(void)
 {  {
   
           PROFILE_INC_EA16(6);
   
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (CPU_BP + CPU_SI);          return (CPU_BP + CPU_SI);
 }  }
Line 134  ea_bp_si_disp8(void) Line 150  ea_bp_si_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(7);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP + CPU_SI);          return (adrs + CPU_BP + CPU_SI);
Line 144  ea_bp_si_disp16(void) Line 162  ea_bp_si_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(8);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP + CPU_SI);          return (adrs + CPU_BP + CPU_SI);
Line 153  static DWORD Line 173  static DWORD
 ea_bp_di(void)  ea_bp_di(void)
 {  {
   
           PROFILE_INC_EA16(9);
   
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (CPU_BP + CPU_DI);          return (CPU_BP + CPU_DI);
 }  }
Line 162  ea_bp_di_disp8(void) Line 184  ea_bp_di_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(10);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP + CPU_DI);          return (adrs + CPU_BP + CPU_DI);
Line 172  ea_bp_di_disp16(void) Line 196  ea_bp_di_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(11);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP + CPU_DI);          return (adrs + CPU_BP + CPU_DI);
Line 181  static DWORD Line 207  static DWORD
 ea_si(void)  ea_si(void)
 {  {
   
           PROFILE_INC_EA16(12);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_SI;          return CPU_SI;
 }  }
Line 190  ea_si_disp8(void) Line 218  ea_si_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(13);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_SI);          return (adrs + CPU_SI);
Line 200  ea_si_disp16(void) Line 230  ea_si_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(14);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_SI);          return (adrs + CPU_SI);
Line 209  static DWORD Line 241  static DWORD
 ea_di(void)  ea_di(void)
 {  {
   
           PROFILE_INC_EA16(15);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_DI;          return CPU_DI;
 }  }
Line 218  ea_di_disp8(void) Line 252  ea_di_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(16);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_DI);          return (adrs + CPU_DI);
Line 228  ea_di_disp16(void) Line 264  ea_di_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(17);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_DI);          return (adrs + CPU_DI);
Line 238  ea_disp16(void) Line 276  ea_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(18);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs;          return adrs;
Line 248  ea_bp_disp8(void) Line 288  ea_bp_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(19);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP);          return (adrs + CPU_BP);
Line 258  ea_bp_disp16(void) Line 300  ea_bp_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(20);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return (adrs + CPU_BP);          return (adrs + CPU_BP);
Line 267  static DWORD Line 311  static DWORD
 ea_bx(void)  ea_bx(void)
 {  {
   
           PROFILE_INC_EA16(21);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_BX;          return CPU_BX;
 }  }
Line 276  ea_bx_disp8(void) Line 322  ea_bx_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA16(22);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX);          return (adrs + CPU_BX);
Line 286  ea_bx_disp16(void) Line 334  ea_bx_disp16(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA16(23);
   
         GET_PCWORD(adrs);          GET_PCWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return (adrs + CPU_BX);          return (adrs + CPU_BX);
Line 317  static DWORD Line 367  static DWORD
 ea32_eax(void)  ea32_eax(void)
 {  {
   
           PROFILE_INC_EA32(0);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_EAX;          return CPU_EAX;
 }  }
Line 325  static DWORD Line 377  static DWORD
 ea32_ecx(void)  ea32_ecx(void)
 {  {
   
           PROFILE_INC_EA32(1);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_ECX;          return CPU_ECX;
 }  }
Line 333  static DWORD Line 387  static DWORD
 ea32_edx(void)  ea32_edx(void)
 {  {
   
           PROFILE_INC_EA32(2);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_EDX;          return CPU_EDX;
 }  }
Line 341  static DWORD Line 397  static DWORD
 ea32_ebx(void)  ea32_ebx(void)
 {  {
   
           PROFILE_INC_EA32(3);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_EBX;          return CPU_EBX;
 }  }
Line 351  ea32_sib(void) Line 409  ea32_sib(void)
         DWORD op, dst;          DWORD op, dst;
         DWORD base, idx, scale;          DWORD base, idx, scale;
   
           PROFILE_INC_EA32(4);
   
         GET_PCBYTE(op);          GET_PCBYTE(op);
         dst = 0;        /* compiler happy */          dst = 0;        /* compiler happy */
   
Line 375  ea32_sib(void) Line 435  ea32_sib(void)
         }          }
         if (idx != 4)          if (idx != 4)
                 dst += CPU_REGS_DWORD(idx) << scale;                  dst += CPU_REGS_DWORD(idx) << scale;
           PROFILE_INC_SIB0(op);
         return dst;          return dst;
 }  }
   
Line 383  ea32_disp32(void) Line 444  ea32_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(5);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs;          return adrs;
Line 392  static DWORD Line 455  static DWORD
 ea32_esi(void)  ea32_esi(void)
 {  {
   
           PROFILE_INC_EA32(6);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_ESI;          return CPU_ESI;
 }  }
Line 400  static DWORD Line 465  static DWORD
 ea32_edi(void)  ea32_edi(void)
 {  {
   
           PROFILE_INC_EA32(7);
   
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return CPU_EDI;          return CPU_EDI;
 }  }
Line 409  ea32_eax_disp8(void) Line 476  ea32_eax_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(8);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EAX;          return adrs + CPU_EAX;
Line 419  ea32_ecx_disp8(void) Line 488  ea32_ecx_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(9);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_ECX;          return adrs + CPU_ECX;
Line 429  ea32_edx_disp8(void) Line 500  ea32_edx_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(10);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EDX;          return adrs + CPU_EDX;
Line 439  ea32_ebx_disp8(void) Line 512  ea32_ebx_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(11);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EBX;          return adrs + CPU_EBX;
Line 451  ea32_sib_disp8(void) Line 526  ea32_sib_disp8(void)
         DWORD op;          DWORD op;
         DWORD base, idx, scale;          DWORD base, idx, scale;
   
           PROFILE_INC_EA32(12);
   
         GET_PCBYTE(op);          GET_PCBYTE(op);
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
   
Line 468  ea32_sib_disp8(void) Line 545  ea32_sib_disp8(void)
         }          }
         if (idx != 4)          if (idx != 4)
                 adrs += CPU_REGS_DWORD(idx) << scale;                  adrs += CPU_REGS_DWORD(idx) << scale;
           PROFILE_INC_SIB1(op);
         return CPU_REGS_DWORD(base) + adrs;          return CPU_REGS_DWORD(base) + adrs;
 }  }
   
Line 476  ea32_ebp_disp8(void) Line 554  ea32_ebp_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(13);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return adrs + CPU_EBP;          return adrs + CPU_EBP;
Line 486  ea32_esi_disp8(void) Line 566  ea32_esi_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(14);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_ESI;          return adrs + CPU_ESI;
Line 496  ea32_edi_disp8(void) Line 578  ea32_edi_disp8(void)
 {  {
         SDWORD adrs;          SDWORD adrs;
   
           PROFILE_INC_EA32(15);
   
         GET_PCBYTESD(adrs);          GET_PCBYTESD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EDI;          return adrs + CPU_EDI;
Line 506  ea32_eax_disp32(void) Line 590  ea32_eax_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(16);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EAX;          return adrs + CPU_EAX;
Line 516  ea32_ecx_disp32(void) Line 602  ea32_ecx_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(17);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_ECX;          return adrs + CPU_ECX;
Line 526  ea32_edx_disp32(void) Line 614  ea32_edx_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(18);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EDX;          return adrs + CPU_EDX;
Line 536  ea32_ebx_disp32(void) Line 626  ea32_ebx_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(19);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EBX;          return adrs + CPU_EBX;
Line 548  ea32_sib_disp32(void) Line 640  ea32_sib_disp32(void)
         DWORD op;          DWORD op;
         DWORD base, idx, scale;          DWORD base, idx, scale;
   
           PROFILE_INC_EA32(20);
   
         GET_PCBYTE(op);          GET_PCBYTE(op);
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
   
Line 565  ea32_sib_disp32(void) Line 659  ea32_sib_disp32(void)
         }          }
         if (idx != 4)          if (idx != 4)
                 adrs += CPU_REGS_DWORD(idx) << scale;                  adrs += CPU_REGS_DWORD(idx) << scale;
           PROFILE_INC_SIB2(op);
         return CPU_REGS_DWORD(base) + adrs;          return CPU_REGS_DWORD(base) + adrs;
 }  }
   
Line 573  ea32_ebp_disp32(void) Line 668  ea32_ebp_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(21);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = SS_FIX;          CPU_INST_SEGREG_INDEX = SS_FIX;
         return adrs + CPU_EBP;          return adrs + CPU_EBP;
Line 583  ea32_esi_disp32(void) Line 680  ea32_esi_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(22);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_ESI;          return adrs + CPU_ESI;
Line 593  ea32_edi_disp32(void) Line 692  ea32_edi_disp32(void)
 {  {
         DWORD adrs;          DWORD adrs;
   
           PROFILE_INC_EA32(23);
   
         GET_PCDWORD(adrs);          GET_PCDWORD(adrs);
         CPU_INST_SEGREG_INDEX = DS_FIX;          CPU_INST_SEGREG_INDEX = DS_FIX;
         return adrs + CPU_EDI;          return adrs + CPU_EDI;

Removed from v.1.1  
changed lines
  Added in v.1.2


RetroPC.NET-CVS <cvs@retropc.net>