Fixing bugs in the metaprogram

This commit is contained in:
Krzosa Karol
2022-06-22 23:47:55 +02:00
parent 05504cbf11
commit ce46eb5a8f
3 changed files with 97 additions and 96 deletions

1
.gitignore vendored
View File

@@ -6,3 +6,4 @@
*.bin *.bin
*.c *.c
backup

View File

@@ -420,7 +420,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left + right; S64 result = left + right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] + [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] + [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SUB_S64:{ case BC_SUB_S64:{
@@ -428,7 +428,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left - right; S64 result = left - right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] - [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] - [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_DIV_S64:{ case BC_DIV_S64:{
@@ -436,7 +436,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left / right; S64 result = left / right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] / [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] / [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_MUL_S64:{ case BC_MUL_S64:{
@@ -444,7 +444,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left * right; S64 result = left * right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] * [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] * [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_MOD_S64:{ case BC_MOD_S64:{
@@ -452,7 +452,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left % right; S64 result = left % right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] % [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] % [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SHR_S64:{ case BC_SHR_S64:{
@@ -460,7 +460,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left >> right; S64 result = left >> right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] >> [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] >> [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SHL_S64:{ case BC_SHL_S64:{
@@ -468,7 +468,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left << right; S64 result = left << right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] << [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] << [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITAND_S64:{ case BC_BITAND_S64:{
@@ -476,7 +476,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left & right; S64 result = left & right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] & [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] & [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITOR_S64:{ case BC_BITOR_S64:{
@@ -484,7 +484,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left | right; S64 result = left | right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] | [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] | [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITXOR_S64:{ case BC_BITXOR_S64:{
@@ -492,7 +492,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left ^ right; S64 result = left ^ right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] ^ [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] ^ [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITNOT_S64:{ case BC_BITNOT_S64:{
@@ -508,7 +508,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left == right; S64 result = left == right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] == [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] == [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_NEQ_S64:{ case BC_NEQ_S64:{
@@ -516,7 +516,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left != right; S64 result = left != right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] != [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] != [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GT_S64:{ case BC_GT_S64:{
@@ -524,7 +524,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left > right; S64 result = left > right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] > [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] > [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LT_S64:{ case BC_LT_S64:{
@@ -532,7 +532,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left < right; S64 result = left < right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] < [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] < [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_OR_S64:{ case BC_OR_S64:{
@@ -540,7 +540,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left || right; S64 result = left || right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] || [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] || [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GTE_S64:{ case BC_GTE_S64:{
@@ -548,7 +548,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left >= right; S64 result = left >= right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] >= [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] >= [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LTE_S64:{ case BC_LTE_S64:{
@@ -556,7 +556,7 @@ run_bytecode_interp(Bc *b){
S64 right = b->registers[instr->index_b].s64; S64 right = b->registers[instr->index_b].s64;
S64 result = left <= right; S64 result = left <= right;
b->registers[instr->index_c].s64 = result; b->registers[instr->index_c].s64 = result;
bc_log("r%s + r%s = r%s => [%lld] <= [%lld] = [%lld]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %lld] <= [r%s, %lld] = [r%s, %lld]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_ADD_U64:{ case BC_ADD_U64:{
@@ -564,7 +564,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left + right; U64 result = left + right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] + [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] + [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SUB_U64:{ case BC_SUB_U64:{
@@ -572,7 +572,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left - right; U64 result = left - right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] - [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] - [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_DIV_U64:{ case BC_DIV_U64:{
@@ -580,7 +580,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left / right; U64 result = left / right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] / [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] / [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_MUL_U64:{ case BC_MUL_U64:{
@@ -588,7 +588,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left * right; U64 result = left * right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] * [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] * [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_MOD_U64:{ case BC_MOD_U64:{
@@ -596,7 +596,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left % right; U64 result = left % right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] % [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] % [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SHR_U64:{ case BC_SHR_U64:{
@@ -604,7 +604,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left >> right; U64 result = left >> right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] >> [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] >> [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SHL_U64:{ case BC_SHL_U64:{
@@ -612,7 +612,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left << right; U64 result = left << right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] << [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] << [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITAND_U64:{ case BC_BITAND_U64:{
@@ -620,7 +620,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left & right; U64 result = left & right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] & [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] & [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITOR_U64:{ case BC_BITOR_U64:{
@@ -628,7 +628,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left | right; U64 result = left | right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] | [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] | [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITXOR_U64:{ case BC_BITXOR_U64:{
@@ -636,7 +636,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left ^ right; U64 result = left ^ right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] ^ [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] ^ [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_BITNOT_U64:{ case BC_BITNOT_U64:{
@@ -652,7 +652,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left == right; U64 result = left == right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] == [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] == [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_NEQ_U64:{ case BC_NEQ_U64:{
@@ -660,7 +660,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left != right; U64 result = left != right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] != [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] != [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GT_U64:{ case BC_GT_U64:{
@@ -668,7 +668,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left > right; U64 result = left > right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] > [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] > [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LT_U64:{ case BC_LT_U64:{
@@ -676,7 +676,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left < right; U64 result = left < right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] < [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] < [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_OR_U64:{ case BC_OR_U64:{
@@ -684,7 +684,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left || right; U64 result = left || right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] || [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] || [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GTE_U64:{ case BC_GTE_U64:{
@@ -692,7 +692,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left >= right; U64 result = left >= right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] >= [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] >= [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LTE_U64:{ case BC_LTE_U64:{
@@ -700,7 +700,7 @@ run_bytecode_interp(Bc *b){
U64 right = b->registers[instr->index_b].u64; U64 right = b->registers[instr->index_b].u64;
U64 result = left <= right; U64 result = left <= right;
b->registers[instr->index_c].u64 = result; b->registers[instr->index_c].u64 = result;
bc_log("r%s + r%s = r%s => [%llu] <= [%llu] = [%llu]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %llu] <= [r%s, %llu] = [r%s, %llu]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_ADD_F64:{ case BC_ADD_F64:{
@@ -708,7 +708,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left + right; F64 result = left + right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] + [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] + [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_SUB_F64:{ case BC_SUB_F64:{
@@ -716,7 +716,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left - right; F64 result = left - right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] - [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] - [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_DIV_F64:{ case BC_DIV_F64:{
@@ -724,7 +724,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left / right; F64 result = left / right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] / [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] / [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_MUL_F64:{ case BC_MUL_F64:{
@@ -732,7 +732,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left * right; F64 result = left * right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] * [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] * [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_EQ_F64:{ case BC_EQ_F64:{
@@ -740,7 +740,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left == right; F64 result = left == right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] == [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] == [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_NEQ_F64:{ case BC_NEQ_F64:{
@@ -748,7 +748,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left != right; F64 result = left != right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] != [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] != [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GT_F64:{ case BC_GT_F64:{
@@ -756,7 +756,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left > right; F64 result = left > right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] > [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] > [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LT_F64:{ case BC_LT_F64:{
@@ -764,7 +764,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left < right; F64 result = left < right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] < [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] < [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_GTE_F64:{ case BC_GTE_F64:{
@@ -772,7 +772,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left >= right; F64 result = left >= right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] >= [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] >= [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
case BC_LTE_F64:{ case BC_LTE_F64:{
@@ -780,7 +780,7 @@ run_bytecode_interp(Bc *b){
F64 right = b->registers[instr->index_b].f64; F64 right = b->registers[instr->index_b].f64;
F64 result = left <= right; F64 result = left <= right;
b->registers[instr->index_c].f64 = result; b->registers[instr->index_c].f64 = result;
bc_log("r%s + r%s = r%s => [%f] <= [%f] = [%f]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, %f] <= [r%s, %f] = [r%s, %f]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}break; }break;
// //

View File

@@ -1,5 +1,3 @@
result = ""
sizes = ["64", "32", "16", "8"] sizes = ["64", "32", "16", "8"]
types = ["S64", "U64", "F64"] types = ["S64", "U64", "F64"]
print_sign = ["%lld", "%llu", "%f"] print_sign = ["%lld", "%llu", "%f"]
@@ -46,7 +44,7 @@ def update_file(filename, comment_name, data_to_write):
a_part = data[0:begin_index] a_part = data[0:begin_index]
b_part = data[begin_index:end_index] b_part = data[begin_index:end_index]
c_part = data[end_index:-1] c_part = data[end_index:len(data)]
data_to_write = begin + data_to_write + end data_to_write = begin + data_to_write + end
@@ -55,7 +53,8 @@ def update_file(filename, comment_name, data_to_write):
if False: if True:
result = ""
enum_members = [] enum_members = []
enum_members.append("BC_END_OF_INSTRUCTIONS") enum_members.append("BC_END_OF_INSTRUCTIONS")
enum_members.append("BC_POP_STACK") enum_members.append("BC_POP_STACK")
@@ -90,6 +89,7 @@ if False:
# Generate switch cases # Generate switch cases
# #
if True: if True:
result = ""
for sign, T in zip(print_sign, types): for sign, T in zip(print_sign, types):
t = T.lower() t = T.lower()
@@ -121,7 +121,7 @@ if True:
{T} right = b->registers[instr->index_b].{t}; {T} right = b->registers[instr->index_b].{t};
{T} result = left {symbol} right; {T} result = left {symbol} right;
b->registers[instr->index_c].{t} = result; b->registers[instr->index_c].{t} = result;
bc_log("r%s + r%s = r%s => [{sign}] {symbol} [{sign}] = [{sign}]", instr->index_a, instr->index_b, instr->index_c, left, right, result); bc_log("[r%s, {sign}] {symbol} [r%s, {sign}] = [r%s, {sign}]", instr->index_a, left, instr->index_b, right, instr->index_c, result);
}}break; }}break;
""" """
################################ ################################