Ronald Caesar 2cc7f297c9 engine: intern constants
This does two things so I'll split them.

(1) Add function intern_constant() which adds a constant to the
constants array and returns the index.

The assembly for this function is beautiful. Only one load and store on
a successfull path.

Dump of assembler code for function intern_constant:
   0x0000000000010ee0 <+0>:     ldr     w8, [x4]
   0x0000000000010ee4 <+4>:     cbnz    w8, 0x10f08 <intern_constant+40>
   0x0000000000010ee8 <+8>:     ldrh    w8, [x2]
   0x0000000000010eec <+12>:    cmp     x3, x8
   0x0000000000010ef0 <+16>:    b.ls    0x10f10 <intern_constant+48>  // b.plast
   0x0000000000010ef4 <+20>:    str     w0, [x1, x8, lsl #2]
   0x0000000000010ef8 <+24>:    add     w9, w8, #0x1
   0x0000000000010efc <+28>:    orr     w0, w8, #0x10000
   0x0000000000010f00 <+32>:    strh    w9, [x2]
   0x0000000000010f04 <+36>:    ret
   0x0000000000010f08 <+40>:    mov     w0, #0x10000                    // #65536
   0x0000000000010f0c <+44>:    ret
   0x0000000000010f10 <+48>:    mov     w8, #0xffffff9c                 // #-100
   0x0000000000010f14 <+52>:    mov     w0, #0x10000                    // #65536
   0x0000000000010f18 <+56>:    str     w8, [x4]
   0x0000000000010f1c <+60>:    ret
End of assembler dump.

(2) I've decided that the entire translation code will fit in
bal_engine.c so the bal_ir_immiter and bal_translator files are not
needed anymore. I moved their preprocessor definitions into bal_engine.c

Signed-off-by: Ronald Caesar <github43132@proton.me>
2026-01-23 20:45:07 -04:00
2026-01-23 20:45:07 -04:00
2026-01-23 20:45:07 -04:00
2025-12-07 14:56:46 -04:00
2026-01-23 20:45:07 -04:00
2025-12-12 18:29:36 -04:00
2025-12-07 13:09:15 -04:00

The Ballistic JIT Engine

“The world's fastest ARM recompiler"

Overview

This is a rewrite the dynarmic recompiler, with the goal of fixing its many flaws.

Building Ballistic

Install Dependancies

macOS

brew install cmake python3
brew install cmark llvm

Debian/Ubuntu

sudo apt update
sudo apt install build-essential cmake python3
sudo apt install libcmark-dev libclang-dev llvm-dev

Fedora

sudo dnf install cmake python3 gcc-c++ cmark-devel clang-devel llvm-devel

Configure CMake

mkdir build
cd build
cmake ..

macOS (If LLVM is not found)

cmake -DCMAKE_PREFIX_PATH=$(brew --prefix llvm) ..

Build Binaries

cmake --build .

The following executables will be created in the build/ directory:

  • libBallistic.a (Static Library)
  • ballistic_cli (Used for Ballistic development)
  • decoder_cli (Instruction decoding tool)
  • cdoc (Documentation generator)
  • ballistic_tests (Test suite)

See tools/ for more information on these executables.

Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-31T05:27:53.380Z
Readme GPL-2.0 12 MiB
Languages
C 91%
XSLT 6.7%
Python 1.4%
CSS 0.6%
CMake 0.3%