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/gen_op | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 lib/gen_op (limited to 'lib/gen_op') diff --git a/lib/gen_op b/lib/gen_op new file mode 100755 index 0000000..77e776d --- /dev/null +++ b/lib/gen_op @@ -0,0 +1,30 @@ +#!/bin/sh + +echo "#ifndef COPYJIT_OP_H" > ops.h +echo "#define COPYJIT_OP_H" >> ops.h + +echo "#ifndef COPYJIT_OP_DECLS_H" > op_decls.h +echo "#define COPYJIT_OP_DECLS_H" >> op_decls.h + +echo "#ifndef COPYJIT_OP_DEFNS_H" > op_defns.h +echo "#define COPYJIT_OP_DEFNS_H" >> op_defns.h + +for bin in ${1} +do + base=$(basename "${bin}") + op=${base%.*} + cp "../${bin}" "gen/${op}" + xxd -i "gen/${op}" >> ops.h + echo "void *compile_${op}(ctx_t *ctx);" >> op_decls.h + echo "void *compile_${op}(ctx_t *ctx)\n" \ + "{\n" \ + " void *pc = ctx->pc;\n" \ + " memcpy(pc, gen_${op}, gen_${op}_len);\n" \ + " ctx->pc += gen_${op}_len;\n" \ + " return pc;\n" \ + "}" >> op_defns.h +done + +echo "#endif /* COPYJIT_OP_H */" >> ops.h +echo "#endif /* COPYJIT_OP_DECLS_H */" >> op_decls.h +echo "#endif /* COPYJIT_OP_DEFNS_H */" >> op_defns.h -- cgit v1.3