-#ifndef _HDLOAD_OSECPU
+#ifndef _HDLOAD_OSECPU
#define _HDLOAD_OSECPU 1
/* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/
#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 */
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",
int flags, dummy; /* read/writeなど */
};
-// LabelTable
typedef struct LabelTable HOSECPU_LabelListTag;
struct LabelTable {
unsigned char *p, *p1;
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;
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);
#endif
+>>>>>>> 4d5d6fa61ff576ba035ee4bd882e8476f2ceeb2b