X-Git-Url: http://git.osdn.net/view?p=heavyosecpu%2FHeavyOSECPU.git;a=blobdiff_plain;f=osecpu.h;fp=osecpu.h;h=468f067721d623f949ed125e29ea6eae05a53311;hp=4dd58d0e908ec7b7ccc13b780554aca8896e4ba5;hb=035a08b35ab09fd704b2c66c5de5c70b66572bc6;hpb=704f64422b7654fc918d74bd06f684e479bb926b diff --git a/osecpu.h b/osecpu.h index 4dd58d0..468f067 100644 --- a/osecpu.h +++ b/osecpu.h @@ -1,4 +1,4 @@ -#ifndef _HDLOAD_OSECPU +#ifndef _HDLOAD_OSECPU #define _HDLOAD_OSECPU 1 /* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/ @@ -67,8 +67,8 @@ #define PTRCTRLSIZ 4096 #define APPSIZ1 1 * 1024 * 1024 /* 1MB for now */ -#define JITSIZ1 1 * 1024 * 1024 /* 1MB for now */ -#define SJITSIZ1 1 * 1024 * 1024 /* 1MB for now */ +#define APPJITSIZE 1 * 1024 * 1024 /* 1MB for now */ +#define SYSJITSIZ1 2 * 1024 * 1024 /* 1MB for now */ #define SYSLIBSIZ1 1 * 1024 * 1024 /* 1MB for now */ #define SYSTMP0SIZ 1 * 1024 * 1024 /* 1MB for now */ #define SYSTMP1SIZ 2 * 1024 * 1024 /* 1MB for now */ @@ -100,11 +100,11 @@ struct PtrCtrl { unsigned char *p0; }; -// Ptr typedef struct Ptr HOSECPU_PointerRegisterEntry; -struct Ptr { /* 32バイト(=256bit!) */ +struct Ptr { + // 32バイト(=256bit!) unsigned char *p; - + /* static char *typName[] = { "T_CODE", "T_VPTR", "T_SINT8", "T_UINT8", "T_SINT16", "T_UINT16", "T_SINT32", "T_UINT32", @@ -120,7 +120,6 @@ struct Ptr { /* 32バイト(=256bit!) */ int flags, dummy; /* read/writeなど */ }; -// LabelTable typedef struct LabelTable HOSECPU_LabelListTag; struct LabelTable { unsigned char *p, *p1; @@ -135,36 +134,38 @@ struct LabelTable { int typ; }; -// Device_Window typedef struct Device_Window HOSECPU_Device_Window; struct Device_Window { - int *vram; // 初期値 : NULL - int xsize, ysize; // 初期値 : 0, 0 + int *vram; + int xsize, ysize; }; -// Regs + env typedef struct Regs HOSECPU_RuntimeEnvironment; -struct Regs{ - int ireg[64]; /* 32bit整数レジスタ */ - HOSECPU_PointerRegisterEntry preg[64]; /* ポインタレジスタ */ +struct Regs { + int ireg[64]; // 整数レジスタ (4 * 64) = 256 + HOSECPU_PointerRegisterEntry preg[64]; // ポインタレジスタ (32 * 64) = 2048 + // + int debugInfo0; // 2304 + int debugInfo1; // 2308 + int dbg_currentCode; // 2312 + int dmy; // 2316 // - int debugInfo0, debugInfo1, dmy[2]; /* 2304 */ - HOSECPU_PointerControlTag *ptrCtrl; /* 2320 */ + HOSECPU_PointerControlTag *ptrCtrl; // 2320 char winClosed, autoSleep; jmp_buf setjmpEnv; - int appReturnCode; // アプリ自体の終了コード - - /* Main environment */ - int mainArgc; // HOSECPU起動引数の個数 - const char **mainArgv; // HOSECPU起動引数リスト - unsigned char *appBin; // 実行するアプリのバイナリ - int appSize0; // アプリバイナリ読み込み時のサイズ(定数) - int appSize1; // アプリのフロントエンドコードのサイズ(tek解凍後) - int executionLevel; - + int appReturnCode; // アプリ自体の終了コード + + /* Main environment */ + int mainArgc; // HOSECPU起動引数の個数 + const char **mainArgv; // HOSECPU起動引数リスト + unsigned char *appBin; // 実行するアプリのバイナリ + int appSize0; + int appSize1; + int executionLevel; + /* for-junkApi */ unsigned char *buf0, *buf1, *junkStack, lastConsoleChar, *junkStack1; - + HOSECPU_LabelListTag *label; int maxLabels; unsigned char *jitbuf, *jitbuf1; @@ -205,11 +206,14 @@ const char *searchArg(int argc, const char **argv, const char *tag, int i); // void devFunc(HOSECPU_RuntimeEnvironment *r); // junkApiを処理する関数 // @jitc.c +void errorHandler(HOSECPU_RuntimeEnvironment *r); +void PRegCopy(HOSECPU_PointerRegisterEntry *dst, HOSECPU_PointerRegisterEntry *src); +// @jitcx86.c int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const unsigned char *p1, int level, HOSECPU_LabelListTag *label); int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *src, const unsigned char *src1, const unsigned char *src0, HOSECPU_LabelListTag *label, int maxLabels, int level, int debugInfo1, int flags); unsigned char *jitCompCallFunc(unsigned char *dst, void *func); unsigned char *jitCompInit(unsigned char *dst); -void errorHandler(HOSECPU_RuntimeEnvironment *r); +void jitcRunBinary(void (*bin)(char *), HOSECPU_RuntimeEnvironment *env); // @randmt.c void randStatInit(unsigned int seed); @@ -237,3 +241,4 @@ int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp); #endif +>>>>>>> 4d5d6fa61ff576ba035ee4bd882e8476f2ceeb2b