blob: 560c37267642ed8cc28d10cf06e0f4945e25efe6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/bin/sh
echo "#ifndef COPYJIT_IMM_H" > imm.h
echo "#define COPYJIT_IMM_H" >> imm.h
echo "#ifndef COPYJIT_IMM_DECLS_H" > imm_decls.h
echo "#define COPYJIT_IMM_DECLS_H" >> imm_decls.h
echo "#ifndef COPYJIT_IMM_DEFNS_H" > imm_defns.h
echo "#define COPYJIT_IMM_DEFNS_H" >> imm_defns.h
for bin in ${1}
do
base=$(basename "${bin}")
op=${base%.*}
cp "../${bin}" "gen/${op}"
xxd -i "gen/${op}" >> imm.h
echo "void *compile_${op}(ctx_t *ctx, unsigned long i);" >> imm_decls.h
echo "void *compile_${op}(ctx_t *ctx, unsigned long i)\n" \
"{\n" \
" void *pc = ctx->pc;\n" \
" memcpy(ctx->pc, gen_${op}, gen_${op}_len);\n" \
" *(unsigned long *)(ctx->pc + gen_${op}_len - 8) = i;\n" \
" ctx->pc += gen_${op}_len;\n" \
" return pc;\n" \
"}" >> imm_defns.h
done
echo "#endif /* COPYJIT_OPS_H */" >> imm.h
echo "#endif /* COPYJIT_DECLS_H */" >> imm_decls.h
echo "#endif /* COPYJIT_DEFNS_H */" >> imm_defns.h
|