Affix
view release on metacpan or search on metacpan
infix/include/emit/emit_math.h view on Meta::CPAN
EMIT_CC_L,
EMIT_CC_GE,
EMIT_CC_LE,
EMIT_CC_G,
} emit_cc_t;
typedef enum {
EMIT_REG_RAX = 0,
EMIT_REG_RCX = 1,
EMIT_REG_RDX = 2,
EMIT_REG_RBX = 3,
EMIT_REG_RSP = 4,
EMIT_REG_RBP = 5,
EMIT_REG_RSI = 6,
EMIT_REG_RDI = 7,
EMIT_REG_R8 = 8,
EMIT_REG_R9 = 9,
EMIT_REG_R10 = 10,
EMIT_REG_R11 = 11,
EMIT_REG_R12 = 12,
EMIT_REG_R13 = 13,
EMIT_REG_R14 = 14,
EMIT_REG_R15 = 15,
} emit_register_t;
INFIX_API infix_status emit_math_mov_imm(emit_context_t * ctx, emit_register_t dest, uint64_t imm);
INFIX_API infix_status emit_math_mov_reg(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_movq_gpr_xmm(emit_context_t * ctx, emit_register_t gpr_dest, emit_register_t xmm_src);
INFIX_API infix_status emit_math_movsd_reg(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_addsd(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_load_f64(emit_context_t * ctx,
emit_register_t dest,
emit_register_t base,
int32_t offset);
INFIX_API infix_status emit_math_add(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_add_imm(emit_context_t * ctx, emit_register_t dest, int32_t imm);
INFIX_API infix_status emit_math_sub(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_sub_imm(emit_context_t * ctx, emit_register_t dest, int32_t imm);
INFIX_API infix_status emit_math_mul(emit_context_t * ctx, emit_register_t src);
INFIX_API infix_status emit_math_imul_imm(emit_context_t * ctx, emit_register_t dest, int32_t imm);
INFIX_API infix_status emit_math_and(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_or(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_xor(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_not(emit_context_t * ctx, emit_register_t reg);
INFIX_API infix_status emit_math_neg(emit_context_t * ctx, emit_register_t reg);
INFIX_API infix_status emit_math_shl(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_shr(emit_context_t * ctx, emit_register_t dest, emit_register_t src);
INFIX_API infix_status emit_math_sal(emit_context_t * ctx, emit_register_t reg, uint8_t amount);
INFIX_API infix_status emit_math_sar(emit_context_t * ctx, emit_register_t reg, uint8_t amount);
INFIX_API infix_status emit_math_cmp(emit_context_t * ctx, emit_register_t a, emit_register_t b);
INFIX_API infix_status emit_math_cmp_imm(emit_context_t * ctx, emit_register_t reg, int32_t imm);
INFIX_API infix_status emit_math_test(emit_context_t * ctx, emit_register_t a, emit_register_t b);
INFIX_API infix_status emit_math_jmp(emit_context_t * ctx, const char * label);
INFIX_API infix_status emit_math_jmp_cc(emit_context_t * ctx, emit_cc_t cc, const char * label);
INFIX_API infix_status emit_math_call(emit_context_t * ctx, const char * name);
INFIX_API infix_status emit_math_prologue(emit_context_t * ctx);
INFIX_API infix_status emit_math_epilogue(emit_context_t * ctx);
INFIX_API infix_status emit_math_ret(emit_context_t * ctx);
INFIX_API infix_status emit_math_push(emit_context_t * ctx, emit_register_t reg);
INFIX_API infix_status emit_math_pop(emit_context_t * ctx, emit_register_t reg);
INFIX_API infix_status emit_math_load_reg(emit_context_t * ctx,
emit_register_t dest,
emit_register_t base,
int32_t offset);
INFIX_API infix_status emit_math_store_reg(emit_context_t * ctx,
emit_register_t base,
int32_t offset,
emit_register_t src);
INFIX_API infix_status emit_math_load_sym(emit_context_t * ctx, emit_register_t dest, const char * sym);
INFIX_API infix_status emit_math_store_sym(emit_context_t * ctx, const char * sym, emit_register_t src);
#ifdef __cplusplus
}
#endif
#endif /* INFIX_EMIT_MATH_H */
( run in 1.003 second using v1.01-cache-2.11-cpan-3fabe0161c3 )