„The world's fastest ARM recompiler“
This is a rewrite of the dynarmic recompiler, with the goal of fixing its many flaws.
Ballistic is being designed to have an extremely low Cache Footprint:
- L1d: 4 KB
- L2: 30 KB
- Create Tier 1 backend compiler.
- Create Tier 2 backend compiler.
- Support
MOVZ,MOVK,MOVNinstructions on both compilers. - Support decoding ARM32 instructions.
- Treat
PACISAPandAUTISAPasNOPthen strip the upper bits ofX30. - 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 Software Page Tables for MMIO and expose the page table memory layout.
- Handle Guest W^X and Guest RO/RW.
- Support Guest Write permissions and MMIO write traps for
bal_translate_write_function_t. - Allow the Guest to inform the memory subsystem that a Guest page has changed state.
- Invalidate JIT caches when Guest memory is modified using
bal_invalidate_git_cache_function_t. - Trap cache maintanence instructions then invalidate the block cache at that GVA.
- Track multiple address spaces with ASIDs.
- Handle memory aliasing and cache attributes (CPU: Cached, GPU: Cached/Write-Combining)
- Rewrite
tools/cdoc.c - Rewrite all Python scripts in Lua.
- Add code examples on how to use a header file like in
bal_x86_sliding_window.h. - Reorganize all functions in alphabetical order in
.cand.hfiles. - Add benchmarks measuring compilation speed compared to other JIT compilers.
brew install cmake python3 llvmsudo apt update
sudo apt install build-essential cmake python3sudo dnf install cmake python3 gcc-c++mkdir build
cd build
cmake ..cmake --build .The compiled executables will be created in the build/bin and build/lib directories.
See tools/ for more information on these executables.