From 6aefc5167a64e05580dcf1afc70efa496ed145ac Mon Sep 17 00:00:00 2001 From: Kimplul Date: Tue, 27 Jun 2023 13:00:19 +0300 Subject: add immediate loading --- lib/imm_defns.h | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/imm_defns.h (limited to 'lib/imm_defns.h') diff --git a/lib/imm_defns.h b/lib/imm_defns.h new file mode 100644 index 0000000..6b9c52a --- /dev/null +++ b/lib/imm_defns.h @@ -0,0 +1,67 @@ +#ifndef COPYJIT_IMM_DEFNS_H +#define COPYJIT_IMM_DEFNS_H +void *compile_addia(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_addia, gen_addia_len); + *(unsigned long *)(ctx->pc + gen_addia_len - 8) = i; + ctx->pc += gen_addia_len; + return pc; + } +void *compile_addio(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_addio, gen_addio_len); + *(unsigned long *)(ctx->pc + gen_addio_len - 8) = i; + ctx->pc += gen_addio_len; + return pc; + } +void *compile_addix(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_addix, gen_addix_len); + *(unsigned long *)(ctx->pc + gen_addix_len - 8) = i; + ctx->pc += gen_addix_len; + return pc; + } +void *compile_addiy(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_addiy, gen_addiy_len); + *(unsigned long *)(ctx->pc + gen_addiy_len - 8) = i; + ctx->pc += gen_addiy_len; + return pc; + } +void *compile_lia(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_lia, gen_lia_len); + *(unsigned long *)(ctx->pc + gen_lia_len - 8) = i; + ctx->pc += gen_lia_len; + return pc; + } +void *compile_lio(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_lio, gen_lio_len); + *(unsigned long *)(ctx->pc + gen_lio_len - 8) = i; + ctx->pc += gen_lio_len; + return pc; + } +void *compile_lix(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_lix, gen_lix_len); + *(unsigned long *)(ctx->pc + gen_lix_len - 8) = i; + ctx->pc += gen_lix_len; + return pc; + } +void *compile_liy(ctx_t *ctx, unsigned long i) + { + void *pc = ctx->pc; + memcpy(ctx->pc, gen_liy, gen_liy_len); + *(unsigned long *)(ctx->pc + gen_liy_len - 8) = i; + ctx->pc += gen_liy_len; + return pc; + } +#endif /* COPYJIT_DEFNS_H */ -- cgit v1.3