infix
A JIT-Powered FFI Library for C
Loading...
Searching...
No Matches
emit_math.h
Go to the documentation of this file.
1
13#ifndef INFIX_EMIT_MATH_H
14#define INFIX_EMIT_MATH_H
15
16#include "emit.h"
17#include <stdbool.h>
18#include <stdint.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
42
61
68 emit_register_t dest,
69 emit_register_t base,
70 int32_t offset);
71
78
84
89
93
94INFIX_API infix_status emit_math_jmp(emit_context_t * ctx, const char * label);
96INFIX_API infix_status emit_math_call(emit_context_t * ctx, const char * name);
100
103
105 emit_register_t dest,
106 emit_register_t base,
107 int32_t offset);
109 emit_register_t base,
110 int32_t offset,
111 emit_register_t src);
112
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif /* INFIX_EMIT_MATH_H */
infix_registry_t * reg
Definition 501_direct_marshalling.c:209
Public API for the emit JIT code generation system.
INFIX_API infix_status emit_math_movsd_reg(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:423
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_addsd(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:434
INFIX_API infix_status emit_math_and(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:152
INFIX_API infix_status emit_math_movq_gpr_xmm(emit_context_t *ctx, emit_register_t gpr_dest, emit_register_t xmm_src)
Definition emit_math.c:47
INFIX_API infix_status emit_math_pop(emit_context_t *ctx, emit_register_t reg)
Definition emit_math.c:352
INFIX_API infix_status emit_math_add_imm(emit_context_t *ctx, emit_register_t dest, int32_t imm)
Definition emit_math.c:82
INFIX_API infix_status emit_math_store_reg(emit_context_t *ctx, emit_register_t base, int32_t offset, emit_register_t src)
Definition emit_math.c:379
INFIX_API infix_status emit_math_load_sym(emit_context_t *ctx, emit_register_t dest, const char *sym)
Definition emit_math.c:398
INFIX_API infix_status emit_math_jmp(emit_context_t *ctx, const char *label)
Definition emit_math.c:280
INFIX_API infix_status emit_math_not(emit_context_t *ctx, emit_register_t reg)
Definition emit_math.c:188
INFIX_API infix_status emit_math_shl(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:212
INFIX_API infix_status emit_math_or(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:164
emit_cc_t
Definition emit_math.h:24
@ EMIT_CC_O
Definition emit_math.h:25
@ EMIT_CC_S
Definition emit_math.h:33
@ EMIT_CC_NS
Definition emit_math.h:34
@ EMIT_CC_B
Definition emit_math.h:27
@ EMIT_CC_P
Definition emit_math.h:35
@ EMIT_CC_L
Definition emit_math.h:37
@ EMIT_CC_NE
Definition emit_math.h:30
@ EMIT_CC_LE
Definition emit_math.h:39
@ EMIT_CC_NP
Definition emit_math.h:36
@ EMIT_CC_GE
Definition emit_math.h:38
@ EMIT_CC_G
Definition emit_math.h:40
@ EMIT_CC_E
Definition emit_math.h:29
@ EMIT_CC_A
Definition emit_math.h:32
@ EMIT_CC_AE
Definition emit_math.h:28
@ EMIT_CC_NO
Definition emit_math.h:26
@ EMIT_CC_BE
Definition emit_math.h:31
INFIX_API infix_status emit_math_add(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:70
INFIX_API infix_status emit_math_store_sym(emit_context_t *ctx, const char *sym, emit_register_t src)
Definition emit_math.c:410
emit_register_t
Definition emit_math.h:43
@ EMIT_REG_RAX
Definition emit_math.h:44
@ EMIT_REG_R11
Definition emit_math.h:55
@ EMIT_REG_R14
Definition emit_math.h:58
@ EMIT_REG_RSP
Definition emit_math.h:48
@ EMIT_REG_R9
Definition emit_math.h:53
@ EMIT_REG_RDI
Definition emit_math.h:51
@ EMIT_REG_R8
Definition emit_math.h:52
@ EMIT_REG_R13
Definition emit_math.h:57
@ EMIT_REG_RBP
Definition emit_math.h:49
@ EMIT_REG_RSI
Definition emit_math.h:50
@ EMIT_REG_RBX
Definition emit_math.h:47
@ EMIT_REG_R15
Definition emit_math.h:59
@ EMIT_REG_RDX
Definition emit_math.h:46
@ EMIT_REG_R12
Definition emit_math.h:56
@ EMIT_REG_RCX
Definition emit_math.h:45
@ EMIT_REG_R10
Definition emit_math.h:54
INFIX_API infix_status emit_math_epilogue(emit_context_t *ctx)
Definition emit_math.c:330
INFIX_API infix_status emit_math_jmp_cc(emit_context_t *ctx, emit_cc_t cc, const char *label)
Definition emit_math.c:293
INFIX_API infix_status emit_math_mul(emit_context_t *ctx, emit_register_t src)
Definition emit_math.c:120
INFIX_API infix_status emit_math_test(emit_context_t *ctx, emit_register_t a, emit_register_t b)
Definition emit_math.c:265
INFIX_API infix_status emit_math_load_reg(emit_context_t *ctx, emit_register_t dest, emit_register_t base, int32_t offset)
Definition emit_math.c:360
INFIX_API infix_status emit_math_prologue(emit_context_t *ctx)
Definition emit_math.c:320
INFIX_API infix_status emit_math_sub(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:95
INFIX_API infix_status emit_math_neg(emit_context_t *ctx, emit_register_t reg)
Definition emit_math.c:200
INFIX_API infix_status emit_math_sal(emit_context_t *ctx, emit_register_t reg, uint8_t amount)
INFIX_API infix_status emit_math_xor(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:176
INFIX_API infix_status emit_math_imul_imm(emit_context_t *ctx, emit_register_t dest, int32_t imm)
Definition emit_math.c:132
INFIX_API infix_status emit_math_mov_reg(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:58
INFIX_API infix_status emit_math_cmp(emit_context_t *ctx, emit_register_t a, emit_register_t b)
Definition emit_math.c:240
INFIX_API infix_status emit_math_shr(emit_context_t *ctx, emit_register_t dest, emit_register_t src)
Definition emit_math.c:226
INFIX_API infix_status emit_math_cmp_imm(emit_context_t *ctx, emit_register_t reg, int32_t imm)
Definition emit_math.c:252
INFIX_API infix_status emit_math_sub_imm(emit_context_t *ctx, emit_register_t dest, int32_t imm)
Definition emit_math.c:107
INFIX_API infix_status emit_math_sar(emit_context_t *ctx, emit_register_t reg, uint8_t amount)
INFIX_API infix_status emit_math_push(emit_context_t *ctx, emit_register_t reg)
Definition emit_math.c:344
INFIX_API infix_status emit_math_call(emit_context_t *ctx, const char *name)
Definition emit_math.c:307
INFIX_API infix_status emit_math_ret(emit_context_t *ctx)
Definition emit_math.c:338
INFIX_API infix_status emit_math_mov_imm(emit_context_t *ctx, emit_register_t dest, uint64_t imm)
Definition emit_math.c:36
infix_status
Enumerates the possible status codes returned by infix API functions.
Definition infix.h:435
#define INFIX_API
Symbol visibility macro.
Definition infix.h:114
Definition emit_internals.h:50