OSDN Git Service

HeavyOSECPUMainの各変数名を適切なものへ変更。
[heavyosecpu/HeavyOSECPU.git] / jitc.h
diff --git a/jitc.h b/jitc.h
index 4a99038..bf136ae 100644 (file)
--- a/jitc.h
+++ b/jitc.h
@@ -1,4 +1,4 @@
-\r
+\r
 #ifndef HeavyOSECPU_jitc_h\r
 #define HeavyOSECPU_jitc_h\r
 \r
@@ -59,10 +59,12 @@ int jitCompCmdLen(const unsigned char *src);
 //\r
 #define IA32_OP_RM32_MOD00_ADDR_DISP32 5\r
 //\r
-#define envOffset_DBGINFO0             (2304 + 0)\r
-#define envOffset_DBGINFO1             (2304 + 4)\r
-#define envOffset_PTRCTRL       (2320)\r
-#define PRegOffset(regid)       (256 + 32 * regid)\r
+#define envOffset_DBGINFO0              (2304 + 0)\r
+#define envOffset_DBGINFO1              (2304 + 4)\r
+#define envOffset_DBGCURRENTCODE        (2304 + 8)\r
+#define envOffset_DBGCURRENTCODEADDR    (2304 + 12)\r
+#define envOffset_PTRCTRL               (2320)\r
+#define PRegOffset(regid)               (256 + 32 * regid)\r
 //\r
 #define jitCompPutImm32(p, i)                                  jitCompPutByte4(p, ((i) & 0xff), (((i) >> 8) & 0xff), (((i) >> 16) & 0xff), (((i) >> 24) & 0xff))\r
 //\r
@@ -77,9 +79,12 @@ int jitCompCmdLen(const unsigned char *src);
 #define jitCompPutOp_CALL_Relative(p, diff)            jitCompPutByte1(p, 0xe8); jitCompPutImm32(p, diff); /*次の命令との相対オフセットだけ相対コールする*/\r
 #define jitCompPutOp_JMPnear(p, diff)                  jitCompPutByte1(p, 0xe9); jitCompPutImm32(p, diff); /*次の命令との相対オフセットだけ相対ジャンプする*/\r
 #define jitCompPutOp_JMPshort(p, diff)                 jitCompPutByte2(p, 0xeb, diff & 0xff);/*次の命令との相対オフセットだけ相対ジャンプする*/\r
+#define jitCompPutOp_INT3(p)                                   jitCompPutByte1(p, 0xCC);\r
 //\r
 #define jitCompPutOp_MOV_EAX_ZERO(p)                           jitCompPutOp_XOR_GReg_GReg(p, IA32_REG0_EAX, IA32_REG0_EAX);\r
-\r
+//\r
+#define DEBUGCode(work, code)                   jitCompPutOp_MOV_GReg_Imm32((work)->dst, IA32_REG0_EAX, code); jitCompPutOp_MOV_EBPDisp_GReg(work, envOffset_DBGCURRENTCODE, IA32_REG0_EAX);\r
+#define DEBUGCodeAddress(work, addr)            jitCompPutOp_MOV_GReg_Imm32((work)->dst, IA32_REG0_EAX, addr); jitCompPutOp_MOV_EBPDisp_GReg(work, envOffset_DBGCURRENTCODEADDR, IA32_REG0_EAX);\r
 // Optimization settings\r
 // 他のCPUへ移植する人へ:\r
 // 以下の定数は最適化のためのものなので、すべて0として簡単に移植しても問題ありません\r