Keystone is a lightweight multi-platform, multi-architecture assembler framework. It offers some unparalleled features:
- Multi-architecture, with support for Arm, Arm64 (AArch64/Armv8), Hexagon, Mips, PowerPC, Sparc, SystemZ & X86 (include 16/32/64bit).
- Clean/simple/lightweight/intuitive architecture-neutral API.
- Implemented in C/C++ languages, with bindings for Python, NodeJS, Ruby, Go & Rust available.
- Native support for Windows & *nix (with Mac OSX, Linux, *BSD & Solaris confirmed).
- Thread-safe by design.
- Open source – with a dual license.
Keystone is based on LLVM, but it goes much further witha lot more to offer.
Further information is available at http://www.keystone-engine.org
Keystone is available under a dual license:
Version 2 of the GNU General Public License (GPLv2). (I.e. Without the "any later version" clause.). License information can be found in theCOPYING file and the EXCEPTIONS-CLIENT file .
This combination allows almost all of open source projects to use Keystone without conflicts.
For commercial usage in production environments, contact the authors of Keystone to buy a royalty-free license.
SeeLICENSE-COM.TXT for more information.
Compilation & Docs
SeeCOMPILE.md file for how to compile and install Keystone.
More documentation is available indocs/README.md.
Contact us via mailing list, email or twitter for any questions.
Keystone is impossible without generous support fromour sponsors. We cannot thank them enough!
CREDITS.TXT records other important contributors of our project.
If you want to contribute, please pick up something from ourGithub issues.
We also maintain a list of more challenged problems in aTODO list.