Preparing to add register windows and function calls

This commit is contained in:
Krzosa Karol
2022-06-23 09:26:40 +02:00
parent f7e03e5d2a
commit b8bcdab073
2 changed files with 232 additions and 234 deletions

View File

@@ -94,14 +94,14 @@ if True:
for size in sizes:
result += f"""
case BC_LOAD_FROM_MEMORY{size}:{{
U{size} *load_address = b->registers[instr->index_a].pointer{size};
b->registers[instr->index_c].u{size} = *load_address;
bc_log("load_address[r%u, %llx] dst[r%u] [0x%llx|%lld|%f]", instr->index_a, load_address, instr->index_c, b->registers[instr->index_c].u{size}, b->registers[instr->index_c].u{size}, b->registers[instr->index_c].u{size});
U{size} *load_address = R(instr->index_a).pointer_u{size};
R(instr->index_c).u{size} = *load_address;
bc_log("load_address[r%u, %llx] dst[r%u] [0x%llx|%lld|%f]", instr->index_a, load_address, instr->index_c, R(instr->index_c).u{size}, R(instr->index_c).u{size}, R(instr->index_c).u{size});
}}break;
case BC_STORE_TO_MEMORY{size}:{{
U{size} *store_address = b->registers[instr->index_c].pointer{size};
*store_address = b->registers[instr->index_a].u{size};
U{size} *store_address = R(instr->index_c).pointer_u{size};
*store_address = R(instr->index_a).u{size};
bc_log("src[r%u] store_address[r%u, %llx] value_written[0x%llx|%lld|%f]", instr->index_a, instr->index_c, store_address, *store_address, *store_address, *store_address);
}}break;
"""
@@ -119,9 +119,9 @@ if True:
if symbol == "~":
result += f"""
case BC_{op_name}_{T}:{{
{T} left = ({T})b->registers[instr->index_a].{t};
{T} left = ({T})R(instr->index_a).{t};
{T} result = {symbol}left;
{T} *dst = b->registers[instr->index_c].pointer_{t};
{T} *dst = R(instr->index_c).pointer_{t};
*dst = result;
bc_log("{symbol} [{sign}] = [{sign}]", left, result);
}}break;
@@ -133,10 +133,10 @@ if True:
# Binary operation
result += f"""
case BC_{op_name}_{T}:{{
{T} left = b->registers[instr->index_a].{t};
{T} right = b->registers[instr->index_b].{t};
{T} left = R(instr->index_a).{t};
{T} right = R(instr->index_b).{t};
{T} result = left {symbol} right;
b->registers[instr->index_c].{t} = result;
R(instr->index_c).{t} = 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;
"""