mirror of
https://github.com/pound-emu/ballistic.git
synced 2026-06-17 04:16:48 -07:00
21628681d52a6248595a20eb84d47abc07b520d0
Signed-off-by: Ronald Caesar <github43132@proton.me>
The Ballistic JIT Engine
„The world's fastest ARM recompiler“
Overview
This is a rewrite of the dynarmic recompiler, with the goal of fixing its many flaws.
Immediate Goals
- Create Tier 1 backend compiler.
- Create Tier 2 backend compiler.
- Support
MOVZ,MOVK,MOVNinstructions on both compilers. - Add more peephole optimizations.
- Have 100% branch coverage.
- Have a config to change Ballistic behavior at runtime.
- Support Block linking.
- Map ARM flags to x86 flags.
- Support 128-bit types and x86 SSE/AVX instructions.
- Add exception handling and recover guest CPU state.
- Add register spilling.
- Add Callback Memory Model.
- Add TLB Memory model.
Building Ballistic
Install Dependencies
macOS
brew install cmake python3 llvm
Debian/Ubuntu
sudo apt update
sudo apt install build-essential cmake python3 libclang-dev llvm-dev
Fedora
sudo dnf install cmake python3 gcc-c++ 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)test_*(Test suite, run withctest)
See tools/ for more information on these executables.
Languages
C
37.7%
cpp
36.8%
Lua
21.3%
XSLT
2%
C++
1.2%
Other
1%