49 Commits

Author SHA1 Message Date
Ronald Caesar c45acbf6ad cpu: add explicit padding to bal_cpu_t
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-15 03:34:17 -04:00
mcrib884 40246aa4f0 assembler: add bal_x86_emit_sub_r64_r64
Emits the x86 sub r64, r64 instruction (opcode 0x2B, REX.W + ModRM,
3 bytes). Follows the 5-check guard pattern matching add_r64_r64.

Signed-off-by: mcrib884 <farukkaya229@outlook.com>
2026-06-14 05:56:23 +00:00
Ronald Caesar 4f33c6fc57 x86/assembler: emit add r64, imm32
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 10:06:33 -04:00
Ronald Caesar b50ac94b04 x86/assembler: emit add r64, r64
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 09:05:02 -04:00
Ronald Caesar 44dc0ec602 x86/compiler1: organize macro opcodes
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 02:11:38 -04:00
Ronald Caesar ae91aac6f7 x86/compiler1: support setcc and jcc instructions in sliding window
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 02:08:32 -04:00
Ronald Caesar a0a15707d7 x86/assembler: emit jcc offset
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 01:45:23 -04:00
Ronald Caesar 89c53b1a3c x86/assembler: add static assert for bal_x86_condition_t
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 01:31:52 -04:00
Ronald Caesar 1c5dacaab7 x86/assembler: emit setcc byte ptr [rbp + offset]
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-06 01:10:22 -04:00
Ronald Caesar a80ba0c320 x86/compiler1: add static assert for compiler1
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-05 04:03:35 -04:00
Ronald Caesar 42fa89dab3 x86/compiler: add static assert for sliding window struct size
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-05 04:02:50 -04:00
Ronald Caesar d202e37aac x86/compiler1: move macros array to the bottom of struct
Setting 128 bytes right in the middle of a struct is bad for the CPU.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-05 04:01:41 -04:00
Ronald Caesar 21628681d5 build: introduce and fix struct padding warningd
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-05 03:39:27 -04:00
Ronald Caesar 69434449cd x86/assembler: organize functions in alphabetical order
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 02:22:56 -04:00
Ronald Caesar 014a4ec7e2 x86/assembler: add condition codes for setcc and jcc instructions
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-06-03 02:22:56 -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 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 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 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 b3fec3a500 x86/compiler1: add reset function
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-29 21:57:57 -04:00
Ronald Caesar 946602952e x86/compiler1: add reset function to sliding window
Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-29 21:55:15 -04:00
Ronald Caesar 549d366fbc x86/compiler1: fix incorrect doc comment
The sliding window will be used only by the Tier 1 compiler.

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-05-29 21:53:30 -04:00