Despite being able to analyze and translate real software, rev.ng is still in alpha stage: failure, crashes and infinite loops are expected.

Depending on the way you intend to use rev.ng, there are several download options:

Source code
Obtain the source code and build rev.ng from scratch. Ideal if you're willing to understand how it works, and maybe contribute to the project.
Binary tarball
We provide an archive containing everything is necessary to run rev.ng for Linux x86-64.
Docker image
The click and play option.

Source code

To handle rev.ng's dependencies we use a meta-repository, known as orchestra. Just clone it and follow the instructions in the README.md file.

Go to orchestra

Note: this might take up to 18 GiB of space and quite some time.

Binary tarball

This download option contains everything you need to get started in a single archive.

tar xavf orchestra.tar.gz
cd orchestra/

Download

Docker

As simple as:

docker pull revng/revng-minimal
docker run -ti revng/revng-minimal

If everything is fine, you're ready to compile and translate your first program:

$ source environment
$ cat > hello.c <<EOF
#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello, world!\n");
}
EOF
$ armv7a-hardfloat-linux-uclibceabi-gcc -static hello.c -o hello.arm
$ mips-unknown-linux-musl-gcc -static hello.c -o hello.mips
$ x86_64-gentoo-linux-musl-gcc -static hello.c -o hello.x86-64 -msoft-float -mfpmath=387 -mlong-double-64 -lc root/lib/linux/libclang_rt.builtins-x86_64.a
$ translate hello.arm
...
$ translate hello.mips
...
$ translate hello.x86-64
...
$ ./hello.arm.translated
Hello, world!
$ ./hello.mips.translated
Hello, world!
$ ./hello.x86-64.translated
Hello, world!

Something not working as expected? Checkout the known limitations or

Get in touch