--- np2/i386c/cpucore.c 2003/12/08 00:55:31 1.1 +++ np2/i386c/cpucore.c 2004/02/05 16:42:14 1.2 @@ -1,11 +1,77 @@ -/* $Id: cpucore.c,v 1.1 2003/12/08 00:55:31 yui Exp $ */ +/* $Id: cpucore.c,v 1.2 2004/02/05 16:42:14 monaka Exp $ */ #include "compiler.h" #include "cpucore.h" +/* Z_FLAG, S_FLAG, P_FLAG, C_FLAG */ +const UINT8 iflags[512] = { + 0x44, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, + 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, + 0x45, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x01, 0x05, 0x05, 0x01, 0x05, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x05, 0x01, 0x05, 0x05, 0x01, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x85, 0x81, 0x81, 0x85, 0x81, 0x85, 0x85, 0x81, + 0x81, 0x85, 0x85, 0x81, 0x85, 0x81, 0x81, 0x85 +}; - BYTE szpcflag[0x200]; - BYTE szpflag_w[0x10000]; +BYTE szpflag_w[0x10000]; void i386c_initialize(void) { @@ -14,23 +80,6 @@ void i386c_initialize(void) { DWORD bit; BYTE f; - for (i=0; i<0x100; i++) { - f = P_FLAG; - for (bit=0x80; bit; bit>>=1) { - if (i & bit) { - f ^= P_FLAG; - } - } - if (!(i & 0xff)) { - f |= Z_FLAG; - } - if (i & 0x80) { - f |= S_FLAG; - } - szpcflag[i+0x000] = f; - szpcflag[i+0x100] = f | C_FLAG; - } - for (i=0; i<0x10000; i++) { f = P_FLAG; for (bit=0x80; bit; bit>>=1) { @@ -47,7 +96,5 @@ void i386c_initialize(void) { szpflag_w[i] = f; } -// #if (defined(I286_C) || defined(I286_ASM_C)) ia32_init(); -// #endif }