diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-06-24 20:48:32 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-06-24 22:10:50 +0300 |
| commit | 422b6c976e28445d2a6e14586fa416b0f16c093f (patch) | |
| tree | a6bf3364cec45ed0c5d48e346a76a98fe9d0094a /lib/gen_lib | |
| download | copyjit-422b6c976e28445d2a6e14586fa416b0f16c093f.tar.gz copyjit-422b6c976e28445d2a6e14586fa416b0f16c093f.zip | |
initial commit
Diffstat (limited to 'lib/gen_lib')
| -rwxr-xr-x | lib/gen_lib | 30 |
1 files changed, 30 insertions, 0 deletions
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 |
