From 19afdb61083e59388031162e0b0ac8d3c4ecadeb Mon Sep 17 00:00:00 2001 From: miha-q <> Date: Fri, 2 Aug 2024 20:04:44 -0400 Subject: [PATCH] Fri Aug 2 08:04:44 PM EDT 2024 --- build.sh | 2 +- src/bytecode.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 898e2ea..2952cff 100644 --- a/build.sh +++ b/build.sh @@ -92,6 +92,6 @@ else fi cd ../obj -fcmd="$fcmd -lm $cflags" +fcmd="$fcmd -g -lm $cflags" echo "$fcmd" $($fcmd) diff --git a/src/bytecode.c b/src/bytecode.c index a908fac..5413a98 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1009,8 +1009,32 @@ int qansel_efficiency(QBytecode* program, int programSize, int head) int tmpscore = 0; int idx = head; + /* + printf("--------------------------------\n"); for (int i = 0; i < programSize; i++) { + if (i != -1) + { + printf("%02X: %s\n", i, qansel_instruction_to_string(program[i].op)); + } + else + { + printf("%02X: ERR\n", i); + } + } + printf("================================\n"); + printf("%i\n", head); + for (int i = 0; i < programSize; i++) + { + printf("%i -> %i\n", i, program[i].next); + } + printf("================================\n"); + */ + + for (int i = 0; i < programSize; i++) + { + //printf("%02X: %s (%i)\n", i, qansel_instruction_to_string(program[idx].op), idx); + switch (program[idx].op) { case QANSEL_INSTRUCTION_X: @@ -1044,7 +1068,9 @@ int qansel_efficiency(QBytecode* program, int programSize, int head) if (tmpscore > 1) score += tmpscore; tmpscore = 0; } + int oidx = idx; idx = program[idx].next; + if (idx == -1) break; } return score; } @@ -1185,10 +1211,12 @@ void qansel_reorder(QAnselContext* ctx, unsigned char* program, int programSize) int head[2]; head[0] = 0; head[1] = 0; + for (int reorid = 0; reorid < 2; reorid++) { while (1) { + head[reorid] = 0; //find the next unchecked instruction int found = -1; int idx = head[reorid]; -- 2.39.5