From 422b6c976e28445d2a6e14586fa416b0f16c093f Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 24 Jun 2023 20:48:32 +0300 Subject: initial commit --- lib/gen_lib | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 lib/gen_lib (limited to 'lib/gen_lib') diff --git a/lib/gen_lib b/lib/gen_lib new file mode 100755 index 0000000..1a86726 --- /dev/null +++ b/lib/gen_lib @@ -0,0 +1,30 @@ +#!/bin/sh + +echo "#ifndef COPYJIT_OPS_H" > ops.h +echo "#define COPYJIT_OPS_H" >> ops.h + +echo "#ifndef COPYJIT_DECLS_H" > decls.h +echo "#define COPYJIT_DECLS_H" >> decls.h + +echo "#ifndef COPYJIT_DEFNS_H" > defns.h +echo "#define COPYJIT_DEFNS_H" >> 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);" >> 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" \ + "}" >> defns.h +done + +echo "#endif /* COPYJIT_OPS_H */" >> ops.h +echo "#endif /* COPYJIT_DECLS_H */" >> decls.h +echo "#endif /* COPYJIT_DEFNS_H */" >> defns.h -- cgit v1.3