Fixing bugs in the metaprogram
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,3 +6,4 @@
|
|||||||
*.bin
|
*.bin
|
||||||
|
|
||||||
*.c
|
*.c
|
||||||
|
backup
|
||||||
@@ -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;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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;
|
||||||
"""
|
"""
|
||||||
################################
|
################################
|
||||||
|
|||||||
Reference in New Issue
Block a user