diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-06-27 13:00:19 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-06-27 13:00:19 +0300 |
| commit | 6aefc5167a64e05580dcf1afc70efa496ed145ac (patch) | |
| tree | 57032839fd8f5f748b273c679f3766c6911bbca5 /lib/imm_defns.h | |
| parent | e80d3758a37848cda7990e8eff68ed9df344afa4 (diff) | |
| download | copyjit-6aefc5167a64e05580dcf1afc70efa496ed145ac.tar.gz copyjit-6aefc5167a64e05580dcf1afc70efa496ed145ac.zip | |
add immediate loading
Diffstat (limited to 'lib/imm_defns.h')
| -rw-r--r-- | lib/imm_defns.h | 67 |
1 files changed, 67 insertions, 0 deletions
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 */ |
