X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fi386%2Femitfuncs.h;h=6aa0819a2e0f9f00cbeeed331bb60f056983fa91;hb=d75b6037acf17c342166b9c9bd6e657dfdd12cd9;hp=38fe2d0641ee51913eef1c90e040ecb05fbd90f8;hpb=40c08bfeff7bca57c4606eb0272bb8b9dad94350;p=cacao.git diff --git a/src/vm/jit/i386/emitfuncs.h b/src/vm/jit/i386/emitfuncs.h index 38fe2d064..6aa0819a2 100644 --- a/src/vm/jit/i386/emitfuncs.h +++ b/src/vm/jit/i386/emitfuncs.h @@ -1,9 +1,9 @@ -/* jit/i386/emitfuncs.h - emit function prototypes +/* vm/jit/i386/emitfuncs.h - emit function prototypes - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, - M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, - P. Tomsich, J. Wenninger + Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates, + R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner, + C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger, + Institut f. Computersprachen - TU Wien This file is part of CACAO. @@ -26,7 +26,7 @@ Authors: Christian Thalinger - $Id: emitfuncs.h 1248 2004-06-30 20:21:55Z twisti $ + $Id: emitfuncs.h 1735 2004-12-07 14:33:27Z twisti $ */ @@ -34,157 +34,158 @@ #ifndef _EMITFUNCS_H #define _EMITFUNCS_H +#include "vm/jit/i386/types.h" -extern u1 *mcodeptr; +/* code generation prototypes *************************************************/ -/* code generation prototypes */ - -void i386_emit_ialu(s4 alu_op, stackptr src, instruction *iptr); -void i386_emit_ialuconst(s4 alu_op, stackptr src, instruction *iptr); -void i386_emit_lalu(s4 alu_op, stackptr src, instruction *iptr); -void i386_emit_laluconst(s4 alu_op, stackptr src, instruction *iptr); -void i386_emit_ishift(s4 shift_op, stackptr src, instruction *iptr); -void i386_emit_ishiftconst(s4 shift_op, stackptr src, instruction *iptr); -void i386_emit_ifcc_iconst(s4 if_op, stackptr src, instruction *iptr); +void i386_emit_ialu(codegendata *cd, s4 alu_op, stackptr src, instruction *iptr); +void i386_emit_ialuconst(codegendata *cd, s4 alu_op, stackptr src, instruction *iptr); +void i386_emit_lalu(codegendata *cd, s4 alu_op, stackptr src, instruction *iptr); +void i386_emit_laluconst(codegendata *cd, s4 alu_op, stackptr src, instruction *iptr); +void i386_emit_ishift(codegendata *cd, s4 shift_op, stackptr src, instruction *iptr); +void i386_emit_ishiftconst(codegendata *cd, s4 shift_op, stackptr src, instruction *iptr); +void i386_emit_ifcc_iconst(codegendata *cd, s4 if_op, stackptr src, instruction *iptr); /* integer instructions */ -void i386_mov_reg_reg(s4 reg, s4 dreg); -void i386_mov_imm_reg(s4 imm, s4 dreg); -void i386_movb_imm_reg(s4 imm, s4 dreg); -void i386_mov_membase_reg(s4 basereg, s4 disp, s4 reg); -void i386_mov_membase32_reg(s4 basereg, s4 disp, s4 reg); -void i386_mov_reg_membase(s4 reg, s4 basereg, s4 disp); -void i386_mov_memindex_reg(s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg); -void i386_mov_reg_memindex(s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_mov_mem_reg(s4 mem, s4 dreg); -void i386_movw_reg_memindex(s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_movb_reg_memindex(s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_mov_imm_membase(s4 imm, s4 basereg, s4 disp); -void i386_movsbl_memindex_reg(s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg); -void i386_movswl_memindex_reg(s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg); -void i386_movzwl_memindex_reg(s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg); -void i386_mov_imm_memindex(s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_movw_imm_memindex(s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_movb_imm_memindex(s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); - -void i386_alu_reg_reg(s4 opc, s4 reg, s4 dreg); -void i386_alu_reg_membase(s4 opc, s4 reg, s4 basereg, s4 disp); -void i386_alu_membase_reg(s4 opc, s4 basereg, s4 disp, s4 reg); -void i386_alu_imm_reg(s4 opc, s4 imm, s4 reg); -void i386_alu_imm_membase(s4 opc, s4 imm, s4 basereg, s4 disp); -void i386_test_reg_reg(s4 reg, s4 dreg); -void i386_test_imm_reg(s4 imm, s4 dreg); -void i386_inc_reg(s4 reg); -void i386_inc_membase(s4 basereg, s4 disp); -void i386_dec_reg(s4 reg); -void i386_dec_membase(s4 basereg, s4 disp); -void i386_dec_mem(s4 mem); -void i386_cltd(); -void i386_imul_reg_reg(s4 reg, s4 dreg); -void i386_imul_membase_reg(s4 basereg, s4 disp, s4 dreg); -void i386_imul_imm_reg(s4 imm, s4 reg); -void i386_imul_imm_reg_reg(s4 imm, s4 reg, s4 dreg); -void i386_imul_imm_membase_reg(s4 imm, s4 basereg, s4 disp, s4 dreg); -void i386_mul_membase(s4 basereg, s4 disp); -void i386_idiv_reg(s4 reg); -void i386_ret(); -void i386_shift_reg(s4 opc, s4 reg); -void i386_shift_membase(s4 opc, s4 basereg, s4 disp); -void i386_shift_imm_reg(s4 opc, s4 imm, s4 reg); -void i386_shift_imm_membase(s4 opc, s4 imm, s4 basereg, s4 disp); -void i386_shld_reg_reg(s4 reg, s4 dreg); -void i386_shld_imm_reg_reg(s4 imm, s4 reg, s4 dreg); -void i386_shld_reg_membase(s4 reg, s4 basereg, s4 disp); -void i386_shrd_reg_reg(s4 reg, s4 dreg); -void i386_shrd_imm_reg_reg(s4 imm, s4 reg, s4 dreg); -void i386_shrd_reg_membase(s4 reg, s4 basereg, s4 disp); -void i386_jmp_imm(s4 imm); -void i386_jmp_reg(s4 reg); -void i386_jcc(s4 opc, s4 imm); -void i386_setcc_reg(s4 opc, s4 reg); -void i386_setcc_membase(s4 opc, s4 basereg, s4 disp); -void i386_xadd_reg_mem(s4 reg, s4 mem); -void i386_neg_reg(s4 reg); -void i386_neg_membase(s4 basereg, s4 disp); -void i386_push_imm(s4 imm); -void i386_pop_reg(s4 reg); -void i386_push_reg(s4 reg); -void i386_nop(); -void i386_lock(); -void i386_call_reg(s4 reg); -void i386_call_imm(s4 imm); -void i386_call_mem(s4 mem); +void i386_mov_reg_reg(codegendata *cd, s4 reg, s4 dreg); +void i386_mov_imm_reg(codegendata *cd, s4 imm, s4 dreg); +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_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); +void i386_movb_reg_memindex(codegendata *cd, s4 reg, s4 disp, s4 basereg, s4 indexreg, s4 scale); +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_membase(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); +void i386_movzwl_memindex_reg(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg); +void i386_mov_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); +void i386_movw_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); +void i386_movb_imm_memindex(codegendata *cd, s4 imm, s4 disp, s4 basereg, s4 indexreg, s4 scale); + +void i386_alu_reg_reg(codegendata *cd, s4 opc, s4 reg, s4 dreg); +void i386_alu_reg_membase(codegendata *cd, s4 opc, s4 reg, s4 basereg, s4 disp); +void i386_alu_membase_reg(codegendata *cd, s4 opc, s4 basereg, s4 disp, s4 reg); +void i386_alu_imm_reg(codegendata *cd, s4 opc, s4 imm, s4 reg); +void i386_alu_imm_membase(codegendata *cd, s4 opc, s4 imm, s4 basereg, s4 disp); +void i386_test_reg_reg(codegendata *cd, s4 reg, s4 dreg); +void i386_test_imm_reg(codegendata *cd, s4 imm, s4 dreg); +void i386_dec_mem(codegendata *cd, s4 mem); +void i386_cltd(codegendata *cd); +void i386_imul_reg_reg(codegendata *cd, s4 reg, s4 dreg); +void i386_imul_membase_reg(codegendata *cd, s4 basereg, s4 disp, s4 dreg); +void i386_imul_imm_reg(codegendata *cd, s4 imm, s4 reg); +void i386_imul_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg); +void i386_imul_imm_membase_reg(codegendata *cd, s4 imm, s4 basereg, s4 disp, s4 dreg); +void i386_mul_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_idiv_reg(codegendata *cd, s4 reg); +void i386_ret(codegendata *cd); +void i386_shift_reg(codegendata *cd, s4 opc, s4 reg); +void i386_shift_membase(codegendata *cd, s4 opc, s4 basereg, s4 disp); +void i386_shift_imm_reg(codegendata *cd, s4 opc, s4 imm, s4 reg); +void i386_shift_imm_membase(codegendata *cd, s4 opc, s4 imm, s4 basereg, s4 disp); +void i386_shld_reg_reg(codegendata *cd, s4 reg, s4 dreg); +void i386_shld_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg); +void i386_shld_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp); +void i386_shrd_reg_reg(codegendata *cd, s4 reg, s4 dreg); +void i386_shrd_imm_reg_reg(codegendata *cd, s4 imm, s4 reg, s4 dreg); +void i386_shrd_reg_membase(codegendata *cd, s4 reg, s4 basereg, s4 disp); +void i386_jmp_imm(codegendata *cd, s4 imm); +void i386_jmp_reg(codegendata *cd, s4 reg); +void i386_jcc(codegendata *cd, s4 opc, s4 imm); +void i386_setcc_reg(codegendata *cd, s4 opc, s4 reg); +void i386_setcc_membase(codegendata *cd, s4 opc, s4 basereg, s4 disp); +void i386_xadd_reg_mem(codegendata *cd, s4 reg, s4 mem); +void i386_neg_reg(codegendata *cd, s4 reg); +void i386_neg_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_push_imm(codegendata *cd, s4 imm); +void i386_pop_reg(codegendata *cd, s4 reg); +void i386_push_reg(codegendata *cd, s4 reg); +void i386_nop(codegendata *cd); +void i386_lock(codegendata *cd); +void i386_call_reg(codegendata *cd, s4 reg); +void i386_call_imm(codegendata *cd, s4 imm); +void i386_call_mem(codegendata *cd, s4 mem); /* floating point instructions */ -void i386_fld1(); -void i386_fldz(); -void i386_fld_reg(s4 reg); -void i386_flds_membase(s4 basereg, s4 disp); -void i386_fldl_membase(s4 basereg, s4 disp); -void i386_fldt_membase(s4 basereg, s4 disp); -void i386_flds_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fldl_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fildl_membase(s4 basereg, s4 disp); -void i386_fildll_membase(s4 basereg, s4 disp); -void i386_fst_reg(s4 reg); -void i386_fsts_membase(s4 basereg, s4 disp); -void i386_fstl_membase(s4 basereg, s4 disp); -void i386_fsts_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fstl_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fstp_reg(s4 reg); -void i386_fstps_membase(s4 basereg, s4 disp); -void i386_fstpl_membase(s4 basereg, s4 disp); -void i386_fstpt_membase(s4 basereg, s4 disp); -void i386_fstps_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fstpl_memindex(s4 disp, s4 basereg, s4 indexreg, s4 scale); -void i386_fistl_membase(s4 basereg, s4 disp); -void i386_fistpl_membase(s4 basereg, s4 disp); -void i386_fistpll_membase(s4 basereg, s4 disp); -void i386_fchs(); -void i386_faddp(); -void i386_fadd_reg_st(s4 reg); -void i386_fadd_st_reg(s4 reg); -void i386_faddp_st_reg(s4 reg); -void i386_fadds_membase(s4 basereg, s4 disp); -void i386_faddl_membase(s4 basereg, s4 disp); -void i386_fsub_reg_st(s4 reg); -void i386_fsub_st_reg(s4 reg); -void i386_fsubp_st_reg(s4 reg); -void i386_fsubp(); -void i386_fsubs_membase(s4 basereg, s4 disp); -void i386_fsubl_membase(s4 basereg, s4 disp); -void i386_fmul_reg_st(s4 reg); -void i386_fmul_st_reg(s4 reg); -void i386_fmulp(); -void i386_fmulp_st_reg(s4 reg); -void i386_fmuls_membase(s4 basereg, s4 disp); -void i386_fmull_membase(s4 basereg, s4 disp); -void i386_fdiv_reg_st(s4 reg); -void i386_fdiv_st_reg(s4 reg); -void i386_fdivp(); -void i386_fdivp_st_reg(s4 reg); -void i386_fxch(); -void i386_fxch_reg(s4 reg); -void i386_fprem(); -void i386_fprem1(); -void i386_fucom(); -void i386_fucom_reg(s4 reg); -void i386_fucomp_reg(s4 reg); -void i386_fucompp(); -void i386_fnstsw(); -void i386_sahf(); -void i386_finit(); -void i386_fldcw_mem(s4 mem); -void i386_fldcw_membase(s4 basereg, s4 disp); -void i386_wait(); -void i386_ffree_reg(s4 reg); -void i386_fdecstp(); -void i386_fincstp(); +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_fldl_membase(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); +void i386_flds_mem(codegendata *cd, s4 mem); +void i386_fldl_mem(codegendata *cd, s4 mem); +void i386_fildl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fildll_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fst_reg(codegendata *cd, s4 reg); +void i386_fsts_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fstl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fsts_memindex(codegendata *cd, s4 disp, s4 basereg, s4 indexreg, s4 scale); +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_fstpl_membase(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); +void i386_fstps_mem(codegendata *cd, s4 mem); +void i386_fstpl_mem(codegendata *cd, s4 mem); +void i386_fistl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fistpl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fistpll_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fchs(codegendata *cd); +void i386_faddp(codegendata *cd); +void i386_fadd_reg_st(codegendata *cd, s4 reg); +void i386_fadd_st_reg(codegendata *cd, s4 reg); +void i386_faddp_st_reg(codegendata *cd, s4 reg); +void i386_fadds_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_faddl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fsub_reg_st(codegendata *cd, s4 reg); +void i386_fsub_st_reg(codegendata *cd, s4 reg); +void i386_fsubp_st_reg(codegendata *cd, s4 reg); +void i386_fsubp(codegendata *cd); +void i386_fsubs_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fsubl_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fmul_reg_st(codegendata *cd, s4 reg); +void i386_fmul_st_reg(codegendata *cd, s4 reg); +void i386_fmulp(codegendata *cd); +void i386_fmulp_st_reg(codegendata *cd, s4 reg); +void i386_fmuls_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fmull_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_fdiv_reg_st(codegendata *cd, s4 reg); +void i386_fdiv_st_reg(codegendata *cd, s4 reg); +void i386_fdivp(codegendata *cd); +void i386_fdivp_st_reg(codegendata *cd, s4 reg); +void i386_fxch(codegendata *cd); +void i386_fxch_reg(codegendata *cd, s4 reg); +void i386_fprem(codegendata *cd); +void i386_fprem1(codegendata *cd); +void i386_fucom(codegendata *cd); +void i386_fucom_reg(codegendata *cd, s4 reg); +void i386_fucomp_reg(codegendata *cd, s4 reg); +void i386_fucompp(codegendata *cd); +void i386_fnstsw(codegendata *cd); +void i386_sahf(codegendata *cd); +void i386_finit(codegendata *cd); +void i386_fldcw_mem(codegendata *cd, s4 mem); +void i386_fldcw_membase(codegendata *cd, s4 basereg, s4 disp); +void i386_wait(codegendata *cd); +void i386_ffree_reg(codegendata *cd, s4 reg); +void i386_fdecstp(codegendata *cd); +void i386_fincstp(codegendata *cd); #endif /* _EMITFUNCS_H */