mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
be72da8b48bd1e8e2d38ca034c94ff1871d131e6
We now reduce the number of cases in which we restart the collection of the `DivergenceDescriptor`s after a IDS modification on the `ScopeGraph` is performed. We previously restarted the collection after each IDS transformation. Now, restart is only performed after IDS is applied on a `Conditional` node whose all successors are divergent exits which are `goto` exits. After such `Conditional` is processed, it may happen that a new `goto` exit becomes divergent for another `Conditional` upwards in the `ScopeGraph`. Therefore, if we do not restart, it may happen that a non-`goto` exit is processed before a `goto` exit, which may lead to suboptimal situations in the emitted number of `goto`s, due to how IDS interacts with `MaterializeTrivialGotos`.
The rev.ng binary analysis framework and decompiler
Welcome to the rev.ng project!
rev.ng is an open source binary analysis framework based on LLVM and QEMU. It features a full-fledged decompiler. It's developed by rev.ng Labs in the open.
Getting started
Head to the online documentation to get started (source).
Getting in touch
You can get in touch with us through the following means:
- X/Twitter, for the latest news about the project;
- Discord, a place for chatting for users and developers;
- Discourse, for user discussions;
- GitHub, for development issues and PRs;
- E-mail, for anything else;
License
The rev.ng binary analysis framework and decompiler is Free Software.
rev.ng depends on certain on GPLv2 components (in particular, QEMU), so the project is GPLv2-licensed as a whole. However, the individual files are licensed under the MIT license.
Languages
C++
77.1%
Python
12.6%
MLIR
4.4%
CMake
1.9%
LLVM
1.4%
Other
2.5%