* src/vm/jit/x86_64/codegen.h (M_BYTE1, M_BYTE2): New macros.
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Fri, 7 Sep 2007 18:41:11 +0000 (20:41 +0200)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Fri, 7 Sep 2007 18:41:11 +0000 (20:41 +0200)
(M_UD2): Added.
(M_RET, M_NOP): Use M_BYTE1.

* src/vm/jit/x86_64/emit.c (emit_ret): Removed.
(emit_nop): Likewise.
* src/vm/jit/x86_64/emit.h: Likewise.

src/vm/jit/x86_64/codegen.h
src/vm/jit/x86_64/emit.c
src/vm/jit/x86_64/emit.h

index e6b1a3786cab57bb26ea21318a4d5a780df98b47..4eb7e8b8ebfaa8f4f1617cc168dd2fd2799f6c63 100644 (file)
 
 /* macros to create code ******************************************************/
 
+#define M_BYTE1(a) \
+    do { \
+        *(cd->mcodeptr) = (a); \
+        cd->mcodeptr++; \
+    } while (0)
+
+
+#define M_BYTE2(a, b) \
+    do { \
+        M_BYTE1(a); \
+        M_BYTE1(b); \
+    } while (0)
+
+
 #define M_MOV(a,b)              emit_mov_reg_reg(cd, (a), (b))
 #define M_MOV_IMM(a,b)          emit_mov_imm_reg(cd, (u8) (a), (b))
 
 #define M_JMP_IMM(a)            emit_jmp_imm(cd, (a))
 #define M_CALL(a)               emit_call_reg(cd, (a))
 #define M_CALL_IMM(a)           emit_call_imm(cd, (a))
-#define M_RET                   emit_ret(cd)
+#define M_RET                   M_BYTE1(0xc3)
 
-#define M_NOP                   emit_nop(cd)
+#define M_NOP                   M_BYTE1(0x90)
+#define M_UD2                   M_BYTE2(0x0f, 0x0b)
 
 #define M_CLR(a)                M_LXOR(a,a)
 
index 5566894e13fd45f00baaba8ba5f905af354e6299..fd7df3364f14a8a2e45789b1640443b6ef764033 100644 (file)
@@ -1628,12 +1628,6 @@ void emit_idivl_reg(codegendata *cd, s8 reg) {
 
 
 
-void emit_ret(codegendata *cd) {
-    *(cd->mcodeptr++) = 0xc3;
-}
-
-
-
 /*
  * shift ops
  */
@@ -1829,11 +1823,6 @@ void emit_xchg_reg_reg(codegendata *cd, s8 reg, s8 dreg) {
 }
 
 
-void emit_nop(codegendata *cd) {
-    *(cd->mcodeptr++) = 0x90;
-}
-
-
 
 /*
  * call instructions
index 35c2c559d841fbedfc1d0a6f61968040ba64ba03..24239e431eacba210eb2337368770e55eadb2747 100644 (file)
@@ -266,7 +266,6 @@ void emit_imul_imm_membase_reg(codegendata *cd, s8 imm, s8 basereg, s8 disp, s8
 void emit_imull_imm_membase_reg(codegendata *cd, s8 imm, s8 basereg, s8 disp, s8 dreg);
 void emit_idiv_reg(codegendata *cd, s8 reg);
 void emit_idivl_reg(codegendata *cd, s8 reg);
-void emit_ret(codegendata *cd);
 void emit_shift_reg(codegendata *cd, s8 opc, s8 reg);
 void emit_shiftl_reg(codegendata *cd, s8 opc, s8 reg);
 void emit_shift_membase(codegendata *cd, s8 opc, s8 basereg, s8 disp);
@@ -293,7 +292,6 @@ void emit_push_reg(codegendata *cd, s8 reg);
 void emit_push_imm(codegendata *cd, s8 imm);
 void emit_pop_reg(codegendata *cd, s8 reg);
 void emit_xchg_reg_reg(codegendata *cd, s8 reg, s8 dreg);
-void emit_nop(codegendata *cd);
 void emit_call_reg(codegendata *cd, s8 reg);
 void emit_call_imm(codegendata *cd, s8 imm);
 void emit_call_mem(codegendata *cd, ptrint mem);