aboutsummaryrefslogtreecommitdiff
path: root/lib/imm_defns.h
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-06-27 13:00:19 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-06-27 13:00:19 +0300
commit6aefc5167a64e05580dcf1afc70efa496ed145ac (patch)
tree57032839fd8f5f748b273c679f3766c6911bbca5 /lib/imm_defns.h
parente80d3758a37848cda7990e8eff68ed9df344afa4 (diff)
downloadcopyjit-6aefc5167a64e05580dcf1afc70efa496ed145ac.tar.gz
copyjit-6aefc5167a64e05580dcf1afc70efa496ed145ac.zip
add immediate loading
Diffstat (limited to 'lib/imm_defns.h')
-rw-r--r--lib/imm_defns.h67
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 */