All Projects → athre0z → disas-bench

athre0z / disas-bench

Licence: MIT License
X86 disassembler benchmark

Programming Languages

c
50402 projects - #5 most used programming language
rust
11053 projects
python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects

Disassembler Benchmark

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

Results

Bench AMD Ubuntu 20.04, AMD Ryzen 9 3950X

Bench Intel macOS 11.4, Intel i7 8700k

Candidates

Capstone

DiStorm

Intel XED

Zydis

iced

bddisasm

yaxpeax-x86

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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].