Skip to content

athre0z/disas-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c1b4ea4 · Jun 28, 2024

History

42 Commits
Jun 28, 2024
Oct 25, 2017
Jun 28, 2024
Oct 25, 2017
Nov 1, 2022
Oct 25, 2017
Dec 4, 2022
Dec 4, 2022
Nov 1, 2022
Aug 9, 2020
Nov 1, 2022
Mar 15, 2021

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!