- bugfix in i386_mov_membase32_reg
authortwisti <none@none>
Thu, 21 Apr 2005 16:40:28 +0000 (16:40 +0000)
committertwisti <none@none>
Thu, 21 Apr 2005 16:40:28 +0000 (16:40 +0000)
- added some membase32 functions

src/vm/jit/i386/emitfuncs.c
src/vm/jit/i386/emitfuncs.h

index 80f03880984afc9184997c97b9a236f028d72692..fbc3bd0917b835f89b696abbab294645d4f18174 100644 (file)
@@ -26,7 +26,7 @@
 
    Authors: Christian Thalinger
 
-   $Id: emitfuncs.c 2211 2005-04-04 10:39:36Z christian $
+   $Id: emitfuncs.c 2316 2005-04-21 16:40:28Z twisti $
 
 */
 
@@ -395,8 +395,9 @@ void i386_mov_membase32_reg(codegendata *cd, s4 basereg, s4 disp, s4 reg)
 {
        COUNT(count_mov_mem_reg);
        *(cd->mcodeptr++) = 0x8b;
-       i386_address_byte(2, (reg), (basereg));
-       i386_emit_imm32((disp));
+/*     i386_address_byte(2,(reg),(basereg)); */
+/*     i386_emit_imm32((disp)); */
+       i386_emit_membase32((basereg),(disp),(reg));
 }
 
 
@@ -408,6 +409,14 @@ void i386_mov_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp)
 }
 
 
+void i386_mov_reg_membase32(codegendata *cd, s4 reg, s4 basereg, s4 disp)
+{
+       COUNT(count_mov_reg_mem);
+       *(cd->mcodeptr++) = 0x89;
+       i386_emit_membase32((basereg),(disp),(reg));
+}
+
+
 void i386_mov_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
 {
        COUNT(count_mov_mem_reg);
@@ -473,6 +482,14 @@ void i386_mov_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp)
 }
 
 
+void i386_mov_imm_membase32(codegendata *cd, s4 imm, s4 basereg, s4 disp)
+{
+       *(cd->mcodeptr++) = 0xc7;
+       i386_emit_membase32((basereg),(disp),0);
+       i386_emit_imm32((imm));
+}
+
+
 void i386_movb_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp)
 {
        *(cd->mcodeptr++) = 0xc6;
@@ -945,6 +962,13 @@ void i386_flds_membase(codegendata *cd, s4 basereg, s4 disp)
 }
 
 
+void i386_flds_membase32(codegendata *cd, s4 basereg, s4 disp)
+{
+       *(cd->mcodeptr++) = 0xd9;
+       i386_emit_membase32((basereg),(disp),0);
+}
+
+
 void i386_fldl_membase(codegendata *cd, s4 basereg, s4 disp)
 {
        *(cd->mcodeptr++) = 0xdd;
@@ -952,6 +976,13 @@ void i386_fldl_membase(codegendata *cd, s4 basereg, s4 disp)
 }
 
 
+void i386_fldl_membase32(codegendata *cd, s4 basereg, s4 disp)
+{
+       *(cd->mcodeptr++) = 0xdd;
+       i386_emit_membase32((basereg),(disp),0);
+}
+
+
 void i386_fldt_membase(codegendata *cd, s4 basereg, s4 disp)
 {
        *(cd->mcodeptr++) = 0xdb;
@@ -1050,6 +1081,13 @@ void i386_fstps_membase(codegendata *cd, s4 basereg, s4 disp)
 }
 
 
+void i386_fstps_membase32(codegendata *cd, s4 basereg, s4 disp)
+{
+       *(cd->mcodeptr++) = 0xd9;
+       i386_emit_membase32((basereg),(disp),3);
+}
+
+
 void i386_fstpl_membase(codegendata *cd, s4 basereg, s4 disp)
 {
        *(cd->mcodeptr++) = 0xdd;
@@ -1057,6 +1095,13 @@ void i386_fstpl_membase(codegendata *cd, s4 basereg, s4 disp)
 }
 
 
+void i386_fstpl_membase32(codegendata *cd, s4 basereg, s4 disp)
+{
+       *(cd->mcodeptr++) = 0xdd;
+       i386_emit_membase32((basereg),(disp),3);
+}
+
+
 void i386_fstpt_membase(codegendata *cd, s4 basereg, s4 disp)
 {
        *(cd->mcodeptr++) = 0xdb;
index 4ce1283e5706124bf1b410eae30d12a8ff4df5ac..bcfb1f6e436d1c5883b30fbe0905b4dbefb9af96 100644 (file)
@@ -1,4 +1,4 @@
-/* vm/jit/i386/emitfuncs.h - emit function prototypes
+/* src/vm/jit/i386/emitfuncs.h - emit function prototypes
 
    Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
    R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
@@ -26,7 +26,9 @@
 
    Authors: Christian Thalinger
 
-   $Id: emitfuncs.h 2042 2005-03-20 13:42:54Z twisti $
+   Changes:
+
+   $Id: emitfuncs.h 2316 2005-04-21 16:40:28Z twisti $
 
 */
 
@@ -56,6 +58,7 @@ void i386_movb_imm_reg(codegendata *cd, s4 imm, s4 dreg);
 void i386_mov_membase_reg(codegendata *cd, s4 basereg, s4 disp, s4 reg);
 void i386_mov_membase32_reg(codegendata *cd, s4 basereg, s4 disp, s4 reg);
 void i386_mov_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp);
+void i386_mov_reg_membase32(codegendata *cd, s4 reg, s4 basereg, s4 disp);
 void i386_mov_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg);
 void i386_mov_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale);
 void i386_movw_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale);
@@ -64,6 +67,7 @@ void i386_mov_reg_mem(codegendata *cd, s4 reg, s4 mem);
 void i386_mov_mem_reg(codegendata *cd, s4 mem, s4 dreg);
 void i386_mov_imm_mem(codegendata *cd, s4 imm, s4 mem);
 void i386_mov_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp);
+void i386_mov_imm_membase32(codegendata *cd, s4 imm, s4 basereg, s4 disp);
 void i386_movb_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp);
 void i386_movsbl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg);
 void i386_movswl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg);
@@ -123,7 +127,9 @@ void i386_fld1(codegendata *cd);
 void i386_fldz(codegendata *cd);
 void i386_fld_reg(codegendata *cd, s4 reg);
 void i386_flds_membase(codegendata *cd, s4 basereg, s4 disp);
+void i386_flds_membase32(codegendata *cd, s4 basereg, s4 disp);
 void i386_fldl_membase(codegendata *cd, s4 basereg, s4 disp);
+void i386_fldl_membase32(codegendata *cd, s4 basereg, s4 disp);
 void i386_fldt_membase(codegendata *cd, s4 basereg, s4 disp);
 void i386_flds_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale);
 void i386_fldl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale);
@@ -138,7 +144,9 @@ void i386_fsts_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 sc
 void i386_fstl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale);
 void i386_fstp_reg(codegendata *cd, s4 reg);
 void i386_fstps_membase(codegendata *cd, s4 basereg, s4 disp);
+void i386_fstps_membase32(codegendata *cd, s4 basereg, s4 disp);
 void i386_fstpl_membase(codegendata *cd, s4 basereg, s4 disp);
+void i386_fstpl_membase32(codegendata *cd, s4 basereg, s4 disp);
 void i386_fstpt_membase(codegendata *cd, s4 basereg, s4 disp);
 void i386_fstps_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale);
 void i386_fstpl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale);