555 Commits

Author SHA1 Message Date
Ronald Caesar 1215ff89f9 engine: add condition code opcodes
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 02:01:49 -04:00
Ronald Caesar 98b06ec001 x86: add NCZV flags
They are stored as contiguous 8-bit values to allow fast setcc writes
without read-modify-write stalls.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 01:59:12 -04:00
Ronald Caesar adcade35f9 engine: add clear cache function
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 01:47:02 -04:00
Ronald Caesar ac7815ef6e engine: add is thread running function
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 01:04:33 -04:00
Ronald Caesar 4461cf1931 engine: add TODO to replace a flag
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 01:02:14 -04:00
Ronald Caesar 109f6bf6e8 docs: Add more immediate goals
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 00:57:53 -04:00
Ronald Caesar 0606a86160 engine: fix incorrect doc return type
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-02 00:57:03 -04:00
Ronald Caesar 66d0575c96 engine: fix race condition when stopping thread
The `stop_requested` thread flag gets set at the beginning of
bal_engine_run_thread() before the main loop happens. A user can call
bal_engine_stop_thread() before this flag gets set causing a race
condition.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-02 00:32:49 -04:00
Ronald Caesar 214e27381f engine: add function to stop engine thread
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-02 00:30:28 -04:00
Ronald Caesar 1c3880021f engine: add threading support
Adds support to allow host applications to run Ballistic on a separate
thread. Only `bal_engine_run_thread()` has been modified. Functions
to modify the thread state will be added in future commits.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 23:39:48 -04:00
Ronald Caesar 31dfd97a7d x86/compiler1: fix unused variable warning
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 23:35:27 -04:00
Ronald Caesar 64d0788f1d engine: add engine already running error
The engine should not be run more than once.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 23:16:02 -04:00
Ronald Caesar 43b0e647d8 engine: do not wipe block cache in reset function
This is done to replicate Dynarmic's API more closely.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 22:52:55 -04:00
Ronald Caesar 1689dda630 engine: implement block caching
This is a 4-way associative block cache map to avoid blocks being
recompiled over and over again by mapping a GVA to a compiled host
executable pointer

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 22:44:32 -04:00
Ronald Caesar e984f25ceb engine: support JMP instructions
Translates B and BR ARM instructions into x86 JMP instructions.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-01 21:39:43 -04:00
Ronald Caesar 301f6df564 assembler: emit BR instruction
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-31 20:22:45 -04:00
Ronald Caesar 4f75e6e8ed assembler: emit B instruction
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-31 20:22:07 -04:00
Ronald Caesar 6be6ce1fdf tests/x86/assembler: add missing jmp functions to test cases
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 16:27:35 -04:00
Ronald Caesar eae90c216c x86/assembler: emit jmp rel32
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 16:20:40 -04:00
Ronald Caesar 8f8f64931c x86/assembler: emit jmp reg64
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 16:04:09 -04:00
Ronald Caesar 0aa0aa9f21 engine: implement BAL_ENGINE_FLAG_INSTRUCTION_COUNTING
This requires adding an `instruction_count` to `bal_cpu_t` and the
macro `BAL_X86_MACRO_ADD_CPU_ICOUNT` for tracking ARM instructions.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 14:51:40 -04:00
Ronald Caesar e33d483f76 engine: move engine flags to a separate flag
This is for reusability purposes.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 14:24:29 -04:00
Ronald Caesar d5857b1cb5 x86/assembler: specify which register holds the base guest cpu context
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 14:02:49 -04:00
Ronald Caesar d95a1f1317 x86/assembler: emit add qword ptr [rbp + offset], immediate
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 13:38:06 -04:00
Ronald Caesar 975ee6cdee x86/assembler: add missing log statement
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-30 07:10:22 -04:00