27 #define MD_EMIT_HPP_ 1
102 #define emit_address_byte(mod,reg,rm) \
104 *(cd->mcodeptr++) = ((((mod) & 0x03) << 6) | (((reg) & 0x07) << 3) | (((rm) & 0x07))); \
108 #define emit_imm8(imm) \
110 *(cd->mcodeptr++) = (u1) ((imm) & 0xff); \
114 #define emit_imm16(imm) \
117 imb.i = (int) (imm); \
118 *(cd->mcodeptr++) = imb.b[0]; \
119 *(cd->mcodeptr++) = imb.b[1]; \
123 #define emit_imm32(imm) \
126 imb.i = (int) (imm); \
127 *(cd->mcodeptr++) = imb.b[0]; \
128 *(cd->mcodeptr++) = imb.b[1]; \
129 *(cd->mcodeptr++) = imb.b[2]; \
130 *(cd->mcodeptr++) = imb.b[3]; \
134 #define emit_mem(r,mem) \
136 emit_address_byte(0,(r),5); \
143 #define emit_reg(reg,rm) emit_address_byte(3,(reg),(rm))
294 #if defined(ENABLE_ESCAPE_CHECK)
306 #endif // MD_EMIT_HPP_
void emit_fsubs_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_imul_membase_reg(codegendata *cd, s4 basereg, s4 disp, s4 dreg)
void emit_test_reg_reg(codegendata *cd, s4 reg, s4 dreg)
void emit_fprem(codegendata *cd)
void emit_imul_imm_membase_reg(codegendata *cd, s4 imm, s4 basereg, s4 disp, s4 dreg)
void emit_neg_reg(codegendata *cd, s4 reg)
void emit_setcc_reg(codegendata *cd, s4 opc, s4 reg)
void emit_mov_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fmul_st_reg(codegendata *cd, s4 reg)
void emit_movb_imm_reg(codegendata *cd, s4 imm, s4 reg)
void emit_shrd_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg)
void emit_mov_membase_reg(codegendata *cd, s4 basereg, s4 disp, s4 reg)
void emit_fsubp_st_reg(codegendata *cd, s4 reg)
void emit_flds_mem(codegendata *cd, s4 mem)
void emit_push_reg(codegendata *cd, s4 reg)
void emit_movw_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fmull_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_mov_membase32_reg(codegendata *cd, s4 basereg, s4 disp, s4 reg)
void emit_fchs(codegendata *cd)
void emit_alu_membase_reg(codegendata *cd, s4 opc, s4 basereg, s4 disp, s4 reg)
void emit_sahf(codegendata *cd)
void emit_flds_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_movzbl_reg_reg(codegendata *cd, s4 a, s4 b)
void emit_mov_mem_reg(codegendata *cd, s4 mem, s4 dreg)
void emit_push_imm(codegendata *cd, s4 imm)
void emit_shrd_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp)
void emit_shld_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg)
void emit_fsub_st_reg(codegendata *cd, s4 reg)
void emit_fildll_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fdivp_st_reg(codegendata *cd, s4 reg)
void emit_finit(codegendata *cd)
void emit_alu_imm_memabs(codegendata *cd, s4 opc, s4 imm, s4 disp)
void emit_mov_reg_membase32(codegendata *cd, s4 reg, s4 basereg, s4 disp)
void emit_mov_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fistl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_movb_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_alu_reg_reg(codegendata *cd, s4 opc, s4 reg, s4 dreg)
void emit_fmuls_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fldl_membase32(codegendata *cd, s4 basereg, s4 disp)
void emit_fadds_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_jmp_reg(codegendata *cd, s4 reg)
void emit_fucompp(codegendata *cd)
void emit_faddp_st_reg(codegendata *cd, s4 reg)
void emit_alu_imm_membase(codegendata *cd, s4 opc, s4 imm, s4 basereg, s4 disp)
void emit_fdivp(codegendata *cd)
void emit_call_imm(codegendata *cd, s4 imm)
void emit_fstps_mem(codegendata *cd, s4 mem)
void emit_movzwl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
void emit_recompute_pv(codegendata *cd)
Emit code to recompute the procedure vector.
void emit_fistpll_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_shld_reg_reg(codegendata *cd, s4 reg, s4 dreg)
void emit_fstpl_membase32(codegendata *cd, s4 basereg, s4 disp)
void emit_fld1(codegendata *cd)
void emit_setcc_membase(codegendata *cd, s4 opc, s4 basereg, s4 disp)
void emit_imul_imm_reg(codegendata *cd, s4 imm, s4 dreg)
void emit_fst_reg(codegendata *cd, s4 reg)
void emit_xadd_reg_mem(codegendata *cd, s4 reg, s4 mem)
void emit_fsts_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_dec_mem(codegendata *cd, s4 mem)
void emit_fstps_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fucomp_reg(codegendata *cd, s4 reg)
void emit_test_imm_reg(codegendata *cd, s4 imm, s4 reg)
void emit_fldl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fstpl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fsubp(codegendata *cd)
void emit_fadd_reg_st(codegendata *cd, s4 reg)
void emit_fstp_reg(codegendata *cd, s4 reg)
void emit_call_reg(codegendata *cd, s4 reg)
void emit_movb_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_imul_reg_reg(codegendata *cd, s4 reg, s4 dreg)
void emit_flds_membase32(codegendata *cd, s4 basereg, s4 disp)
void emit_mul_reg(codegendata *cd, s4 reg)
void emit_movsbl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
void emit_fldcw_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_mov_imm_membase32(codegendata *cd, s4 imm, s4 basereg, s4 disp)
void emit_movswl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
void emit_fmulp(codegendata *cd)
void emit_fucom(codegendata *cd)
void emit_shift_reg(codegendata *cd, s4 opc, s4 reg)
void emit_fxch_reg(codegendata *cd, s4 reg)
void emit_shrd_reg_reg(codegendata *cd, s4 reg, s4 dreg)
void emit_flds_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_imul_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg)
void emit_mov_imm_mem(codegendata *cd, s4 imm, s4 mem)
void emit_fdiv_st_reg(codegendata *cd, s4 reg)
void emit_fstl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_ffree_reg(codegendata *cd, s4 reg)
void emit_mov_imm2_reg(codegendata *cd, s4 imm, s4 reg)
void emit_fldl_mem(codegendata *cd, s4 mem)
void emit_fmulp_st_reg(codegendata *cd, s4 reg)
void emit_wait(codegendata *cd)
void emit_mov_imm_reg(codegendata *cd, s4 imm, s4 reg)
void emit_mov_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
void emit_alu_reg_membase(codegendata *cd, s4 opc, s4 reg, s4 basereg, s4 disp)
void emit_fsub_reg_st(codegendata *cd, s4 reg)
void emit_mov_reg_reg(codegendata *cd, s4 reg, s4 dreg)
void emit_fprem1(codegendata *cd)
void emit_alu_imm_reg(codegendata *cd, s4 opc, s4 imm, s4 dreg)
void emit_movswl_reg_reg(codegendata *cd, s4 a, s4 b)
void emit_fldz(codegendata *cd)
void emit_fstps_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_alu_memindex_reg(codegendata *cd, s4 opc, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
void emit_fadd_st_reg(codegendata *cd, s4 reg)
void emit_movzwl_reg_reg(codegendata *cd, s4 a, s4 b)
void emit_jcc(codegendata *cd, s4 opc, s4 imm)
void emit_fstl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fucom_reg(codegendata *cd, s4 reg)
void emit_fmul_reg_st(codegendata *cd, s4 reg)
void emit_pop_reg(codegendata *cd, s4 reg)
void emit_movw_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_call_mem(codegendata *cd, s4 mem)
void emit_fsts_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_mov_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp)
void emit_lock(codegendata *cd)
void emit_fxch(codegendata *cd)
void emit_faddl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fstpl_mem(codegendata *cd, s4 mem)
void emit_movb_imm_membase(codegendata *cd, s4 imm, s4 basereg, s4 disp)
void emit_mov_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp)
void emit_jmp_imm(codegendata *cd, s4 imm)
void emit_shld_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp)
void emit_shift_imm_reg(codegendata *cd, s4 opc, s4 imm, s4 dreg)
void emit_alu_imm32_reg(codegendata *cd, s4 opc, s4 imm, s4 dreg)
void emit_fstpt_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fildl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fincstp(codegendata *cd)
void emit_faddp(codegendata *cd)
void emit_inc_reg(codegendata *cd, s4 reg)
void emit_fdecstp(codegendata *cd)
void emit_fstpl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fldt_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_mov_reg_mem(codegendata *cd, s4 reg, s4 mem)
void emit_fistpl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fldl_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale)
void emit_fldcw_mem(codegendata *cd, s4 mem)
void emit_fdiv_reg_st(codegendata *cd, s4 reg)
void emit_idiv_reg(codegendata *cd, s4 reg)
void emit_fnstsw(codegendata *cd)
void emit_fstps_membase32(codegendata *cd, s4 basereg, s4 disp)
void emit_fsubl_membase(codegendata *cd, s4 basereg, s4 disp)
void emit_fld_reg(codegendata *cd, s4 reg)
void emit_movsbl_reg_reg(codegendata *cd, s4 a, s4 b)