engine: add incomplete translator loop

Everything has been setup except for the main translation loop which
have to be done another day. Its after midnight for me right now :(

Signed-off-by: Ronald Caesar <github43132@proton.me>
This commit is contained in:
Ronald Caesar
2026-01-14 00:06:15 -04:00
parent f72da3e121
commit 1a1ce44c87
3 changed files with 41 additions and 4 deletions

View File

@@ -36,6 +36,7 @@ add_library(Ballistic STATIC
src/decoder.c
src/decoder_table_gen.c
src/bal_engine.c
src/bal_translator.c
)
target_include_directories(Ballistic PUBLIC include)

View File

@@ -1,11 +1,46 @@
#include "bal_translator.h"
#include "bal_translator.h"
typedef struct
{
bal_instruction_t *BAL_RESTRICT instructions;
bal_bit_width_t *BAL_RESTRICT ssa_bit_widths;
bal_instruction_t *BAL_RESTRICT instructions;
bal_bit_width_t *BAL_RESTRICT ssa_bit_widths;
bal_source_variable_t *BAL_RESTRICT source_variables;
size_t instruction_count;
size_t instruction_count;
uint32_t max_instructions;
bal_error_t status;
} bal_translation_context_t;
bal_error_t
bal_translate_block (bal_engine_t *BAL_RESTRICT engine,
const uint32_t *BAL_RESTRICT arm_code)
{
// Copy pointers to the stack to deal with Double Indirection and Aliasing
// Fear.
//
bal_translation_context_t context;
context.instructions = engine->instructions;
context.ssa_bit_widths = engine->ssa_bit_widths;
context.source_variables = engine->source_variables;
// Copy other important data to `context` to keep register pressure low.
//
context.instruction_count = engine->instruction_count;
context.max_instructions
= engine->instructions_size / sizeof(bal_instruction_t);
context.status = BAL_SUCCESS;
for (size_t i = 0; i < context.max_instructions; ++i)
{
// TODO
}
// Sync back to memory. We should only write to engine once in this
// function.
//
engine->instruction_count = context.instruction_count;
engine->status = context.status;
return context.status;
}
/*** end of file ***/

View File

@@ -17,6 +17,7 @@
#include "bal_engine.h"
#include "bal_types.h"
#include "bal_errors.h"
#endif /* BAL_TRANSLATOR_H */