Skip to content

ianichitei/disas-bench

 
 

Repository files navigation

Disassembler Benchmark

This repository holds benchmarking code for various x86/x86-64 disassembler libraries.

Results

Bench Intel NixOS, Linux 6.0.10, GCC 11, rustc 1.67.0-nightly, i7-12700K

Candidates

Capstone

DiStorm

Intel XED

Zydis

iced

bddisasm

yaxpeax-x86

Sleigh

Benchmarking

Windows:

REM Start "x64 Native Tools Command Prompt for VS 2019"
REM Start git bash:
"C:\Program Files\Git\bin\bash.exe"

Windows/Linux/macOS:

git clone --recursive 'https://github.com/athre0z/disas-bench.git'
cd disas-bench.git
./make-all.sh
# Windows: python
python3 -mvenv venv
# Windows: source venv/Scripts/activate
source venv/bin/activate
pip install -r requirements.txt
# Optional args: <code-offset> <code-len> <filename> [loop-count]
# macOS/Windows: python bench.py
LD_LIBRARY_PATH=$(pwd)/bench/distorm python bench.py

The optional bench.py arguments are:

  • <code-offset> = offset of the code section (in decimal or 0x hex)
  • <code-len> = length of the code section (in decimal or 0x hex)
  • <filename> = 64-bit x86 binary file to decode and format
  • [loop-count] = optional loop count. Total number of bytes decoded and formatted is <code-len> * [loop-count]

Contributing

If you feel like the benchmark for a lib doesn't drive it to its full potential or treats it unfairly, I'd be happy to accept PRs with improvements!

About

X86 disassembler benchmark

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 31.5%
  • Rust 20.0%
  • C++ 14.0%
  • Python 12.5%
  • Shell 12.2%
  • CMake 5.0%
  • Makefile 4.8%