OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/heavyosecpu/HeavyOSECPU
[heavyosecpu/HeavyOSECPU.git] / osecpu.h
index 4dd58d0..468f067 100644 (file)
--- 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