Arm AArch64 to RISC-V Transpiler
By Moshe Schorr (mosheraphael@gmail.com) and Matan Ivgi (mdivgi@gmail.com), supervised by Hillel Mendelson (hillelm@il.ibm.com), Shay Aviv (Shay.Aviv@ibm.com), Hernan Theiler (Hernan.Theiler@il.ibm.com), and Tom Kolan (tomk@il.ibm.com) at IBM Research Haifa.
Pipe Arm assembly in, it writes RISC-V assembly to stdout
.
For instance, the test code is essentially along the lines of: armgcc -S -o - <input file name> | python3 arm2riscv.py | rvgcc -x assembler - -static
.
For compiling C to RISC-V through the transpiler, there's a shortcut: ./compile_thru_arm2riscv.sh <file name>
.
Run python3 arm2riscv.py -h
for fuller usage and flags.
python3 test_suite.py
runs the testing.
Requires: Python 3.6 or newer
You can use the dockerfile, or manually set up a test environment.
- lark-parser (
pip install lark-parser
) - tqdm (tests) (
pip install tqdm
)
The safest option is to stick to the tested versions on Ubuntu, since both were tested on version 7.4.0. Both compiler toolchains are needed to run the test suite. Run:
sudo apt-get install gcc-aarch64-linux-gnu=4:7.4.0-1ubuntu2.3
sudo apt-get install gcc-riscv64-linux-gnu=4:7.4.0-1ubuntu1.3
Since the correct qemu-static-user binaries are hard to find, they're included.
Copy both of them (qemu-aarch64-static
, qemu-riscv64-static
) from testing/qemu_binaries
to /usr/local/bin
so they're visible to the testing.
Tests should now be runnable -- python3 test_suite.py
in the main directory should be able to run it.