--- np2/i386c/ia32/resolve.h 2003/12/08 00:55:31 1.1 +++ np2/i386c/ia32/resolve.h 2004/02/05 16:43:44 1.3 @@ -1,4 +1,4 @@ -/* $Id: resolve.h,v 1.1 2003/12/08 00:55:31 yui Exp $ */ +/* $Id: resolve.h,v 1.3 2004/02/05 16:43:44 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -36,10 +36,23 @@ extern "C" { void resolve_init(void); +#if defined(DEBUG) || !defined(IA32_INLINE_CALC_EA) DWORD calc_ea_dst(DWORD); -#define calc_lea(op) calc_ea_dst(op) -#define get_ea(op) calc_ea_dst(op) -#define get_lea(op) calc_ea_dst(op) +#else +DWORD (*calc_ea_dst_tbl[0x100])(void); +DWORD (*calc_ea32_dst_tbl[0x100])(void); + +INLINE static DWORD +calc_ea_dst(DWORD op) +{ + + __ASSERT(op < 0x100); + + if (!CPU_INST_AS32) + return ((*calc_ea_dst_tbl[op])() & 0xffff); + return (*calc_ea32_dst_tbl[op])(); +} +#endif #ifdef __cplusplus }