Capstone supports an impressive breadth of architectures. However, if all you need is x86/ARM64 decoding and disassembly, there are much higher quality (in terms of accurate decoding) libraries out there.
I wrote a differential fuzzer for x86 decoders a few years ago, and XED and Zydis generally performed far better (in terms of accuracy) than Capstone[1]. And on the Rust side, yaxpeax and iced-x86 perform very admirably.
[1]: https://blog.trailofbits.com/2019/10/31/destroying-x86_64-in...
It's difficult to find a succinct overview. Here is a slide deck buried among links: http://www.capstone-engine.org/BHUSA2014-capstone.pdf
Capstone is very useful!
Someone (not me) has also cross-compiled Capstone to WebAssembly so it can be used in client-side browser applications.
https://alexaltea.github.io/capstone.js/
I've used this in a couple of projects to support disassembly in static web apps with no back end.
Imhex is a really great frontend for Capstone. https://github.com/WerWolv/ImHex
It is also used in one of the Linux kernel debuggers: https://codeberg.org/pf-kernel/crush
Haha, I noticed you had this commit https://codeberg.org/pf-kernel/crush/commit/24c19bfacc7fff64...
Upcoming v6 release (current 'next' branch) of the capstone updated SystemZ (S390) significantly, so it should work even better now.
I think it’s incredible this is implemented in C. Well done!
It uses semi-automatic mechanism[1][2] of generating C code from the LLVM sources (TableGen files).
[1] https://github.com/capstone-engine/capstone/blob/next/suite/...
[2] https://github.com/capstone-engine/capstone/blob/next/docs/A...