hello, I've added the following new ops to i386/core.jit: inc_i dec_i inc_i_ic dec_i_ic lt_i_ic_ic lt_i_i_ic gt_i_ic_ic gt_i_i_ic ge_i_ic_ic ge_i_i_ic le_i_ic_ic le_i_i_ic eq_i_ic_ic eq_i_i_ic
also fixed buggy definitions for emitm_cmpl_r_m and emitm_cmpl_m_r in i386/jit_emit.h. cheers, Aldo __END__ $_=q,just perl,,s, , another ,,s,$, hacker,,print; Index: core.jit =================================================================== RCS file: /cvs/public/parrot/jit/i386/core.jit,v retrieving revision 1.17 diff -c -b -r1.17 core.jit *** core.jit 20 May 2002 05:32:59 -0000 1.17 --- core.jit 22 May 2002 10:34:48 -0000 *************** *** 74,79 **** --- 74,163 ---- emit_jump(jit_info, *INT_CONST[1]); } + Parrot_inc_i { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_addl_i_r(NATIVECODE, 1, emit_EAX); + emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]) + } + + Parrot_dec_i { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_subl_i_r(NATIVECODE, 1, emit_EAX); + emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]) + } + + Parrot_inc_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_addl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]) + } + + Parrot_dec_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_subl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]) + } + + Parrot_lt_i_ic_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emit_jcc(jit_info, emitm_jl, *INT_CONST[3]); + } + + Parrot_lt_i_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[2]); + emit_jcc(jit_info, emitm_jl, *INT_CONST[3]); + } + + Parrot_gt_i_ic_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emit_jcc(jit_info, emitm_jg, *INT_CONST[3]); + } + + Parrot_gt_i_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[2]); + emit_jcc(jit_info, emitm_jg, *INT_CONST[3]); + } + + Parrot_ge_i_ic_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emit_jcc(jit_info, emitm_jnl, *INT_CONST[3]); + } + + Parrot_ge_i_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[2]); + emit_jcc(jit_info, emitm_jnl, *INT_CONST[3]); + } + + Parrot_le_i_ic_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emit_jcc(jit_info, emitm_jle, *INT_CONST[3]); + } + + Parrot_le_i_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[2]); + emit_jcc(jit_info, emitm_jle, *INT_CONST[3]); + } + + Parrot_eq_i_ic_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX); + emit_jcc(jit_info, emitm_je, *INT_CONST[3]); + } + + Parrot_eq_i_i_ic { + emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[1]); + emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None, &INT_REG[2]); + emit_jcc(jit_info, emitm_je, *INT_CONST[3]); + } + /* * Local variables: * c-indentation-style: bsd Index: jit_emit.h =================================================================== RCS file: /cvs/public/parrot/jit/i386/jit_emit.h,v retrieving revision 1.1 diff -c -b -r1.1 jit_emit.h *** jit_emit.h 20 May 2002 05:32:59 -0000 1.1 --- jit_emit.h 22 May 2002 10:34:49 -0000 *************** *** 393,400 **** /* Integer comparisions */ #define emitm_cmpl_r_r(pc, reg1, reg2) emitm_alul_r_r(pc, 0x39, reg1, reg2) ! #define emitm_cmpl_r_m(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x3b, reg1, reg2, b, i, s, d) ! #define emitm_cmpl_m_r(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x39, reg1, reg2, b, i, s, d) #define emitm_cmpl_i_r(pc, imm, reg) emitm_alul_i_r(pc, 0x81, emit_b111, imm, reg) --- 393,400 ---- /* Integer comparisions */ #define emitm_cmpl_r_r(pc, reg1, reg2) emitm_alul_r_r(pc, 0x39, reg1, reg2) ! #define emitm_cmpl_r_m(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x3b, reg, b, i, s, d) ! #define emitm_cmpl_m_r(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x39, reg, b, i, s, d) #define emitm_cmpl_i_r(pc, imm, reg) emitm_alul_i_r(pc, 0x81, emit_b111, imm, reg)