summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/fspec-dump.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/src/bin/fspec-dump.c b/src/bin/fspec-dump.c
index e7993e6..5732018 100644
--- a/src/bin/fspec-dump.c
+++ b/src/bin/fspec-dump.c
@@ -164,11 +164,9 @@ enum fspec_instruction {
INS_PUSH,
INS_PUSHR,
INS_POP,
- INS_INCR,
INS_OP,
INS_QUEUE,
INS_IO,
- INS_EXEC,
INS_CALL,
INS_JMP,
INS_JMPIF,
@@ -415,10 +413,6 @@ fspec_execute(struct fspec_ctx *ctx, const uint8_t *ir, const uint64_t irlen, co
fprintf(stderr, "POP R: %lu\n", insv);
stack_pop(&ctx->S, &ctx->R.value[insv]);
break;
- case INS_INCR:
- fprintf(stderr, "INCR R: %lu\n", insv);
- register_set_num(&ctx->R.value[insv], &ctx->mem, register_get_num(&ctx->R.value[insv], &ctx->mem) + 1);
- break;
case INS_OP:
fprintf(stderr, "OP op: %lu\n", insv);
do_op(ctx, insv);
@@ -428,6 +422,7 @@ fspec_execute(struct fspec_ctx *ctx, const uint8_t *ir, const uint64_t irlen, co
break;
case INS_IO: {
const uint64_t R = stack_pop_num(&ctx->S, &ctx->mem);
+ assert(R > 0 && R < ARRAY_SIZE(ctx->R.value));
fprintf(stderr, "IO: sz: %lu, R: %lu\n", insv, R);
ctx->R.value[R].off = ctx->mem.ptr;
const uint64_t szb = DIV_ROUND_UP(insv, CHAR_BIT), bpe = (szb * CHAR_BIT) / insv;
@@ -442,21 +437,6 @@ fspec_execute(struct fspec_ctx *ctx, const uint8_t *ir, const uint64_t irlen, co
return true;
}
break;
- case INS_EXEC: {
- fprintf(stderr, "EXEC R: %lu\n", insv);
- const struct fspec_register old_r1 = ctx->R.value[1];
- stack_pop(&ctx->S, &ctx->R.value[1]);
- uint64_t nmemb = 1;
- do {
- nmemb *= (ctx->S.numv ? stack_pop_num(&ctx->S, &ctx->mem) : 1);
- fprintf(stderr, "off: %lu len: %lu nmemb: %lu\n", ctx->R.value[insv].off, ctx->R.value[insv].len, nmemb);
- for (uint64_t i = 0; i < nmemb; ++i)
- if (fspec_execute(ctx, ctx->mem.data + ctx->R.value[insv].off, ctx->R.value[insv].len, ind + INDSTP))
- return true;
- } while (ctx->S.numv);
- ctx->R.value[1] = old_r1;
- }
- break;
case INS_CALL: {
fprintf(stderr, "CALL R: %lu\n", insv);
ctx->S.numv = 0;