项目作者: ria-jit

项目描述 :
Lightweight and performant dynamic binary translation for RISC–V code on x86–64
高级语言: C++
项目地址: git://github.com/ria-jit/ria-jit.git
创建时间: 2020-11-02T11:42:35Z
项目社区:https://github.com/ria-jit/ria-jit

开源协议:GNU General Public License v3.0

下载


Dynamic Binary Translation (RISC-V -> x86) 🛠


Make RISC-V code executable on the x86-64 ISA by means of dynamic binary translation.

pipeline status

🏠 Homepage

Paper

You can find the source code of the paper under documentation. It is also published at researchgate.net.

Building the translator

After checking out the git repository (and running git submodule update --init to fetch the dependencies), the translator can be built via

  1. sudo apt-get -y install gcc g++ cmake make autoconf meson (required dependencies)
  2. mkdir build && cd build && cmake .. && make

We can execute binaries compiled via the RISC-V toolchain gcc and the options -static -march=rv64imafd -mabi=lp64d.

Usage

  1. Usage: ./translator [translator option(s)] -f <filename> [guest options]
  2. Options:
  3. -v, --version
  4. Show translator version.
  5. -f, --file <executable>
  6. Specify executable. All options after the file path are passed to the guest.
  7. -a, --analyze-all
  8. --analyze-mnem, --analyze-reg, --analyze-pattern
  9. Analyze the binary. Does not execute the guest program.
  10. Inspects passed program binary and shows the selected statistics.
  11. -b, --benchmark
  12. Benchmark execution. Times the execution of the program,
  13. excluding mapping the binary into memory.
  14. -p, --profile
  15. Profile register usage. Display dynamic register usage statistics.
  16. --perf
  17. Log the generated blocks to /tmp/perf-<pid>.map for externally profiling
  18. the execution in perf.
  19. -s, --fail-silently
  20. Fail silently for some error conditions.
  21. Allows continued execution, but the client program may enter undefined states.
  22. -h, --help
  23. Show this help.
  24. Logging:
  25. --log=category,[...]
  26. Enable logging for certain categories. See --log=help for more info.
  27. -g Display general verbose info (--log=general,strace)
  28. -i Display parsed RISC-V input assembly (--log=asm_in)
  29. -o Display translated output x86 assembly (--log=asm_out,verbose_disasm)
  30. -r Dump registers on basic block boundaries (--log=reg)
  31. -c Display cache info (--log=cache)
  32. Optimization:
  33. --optimize=category,[...]
  34. Disable certain optimization categories. See --optimize=help for more info.
  35. -d Enable Single stepping mode.
  36. Each instruction will be its own block. (--optimize=singlestep)
  37. -m Disable all translation optimization features. (--optimize=none)

Run tests

  1. ./test

Authors

👤 Noah Dormann, Simon Kammermeier, Johannes Pfannschmidt, Florian Schmidt

Supervisor

👤 Alexis Engelke

CPU2017.218.intspeed.refspeed_1647749038044.pdf
CPU2017.219.intspeed.refspeed_1647749038190.pdf
CPU2017.220.intspeed.refspeed_1647749038507.pdf
CPU2017.221.intspeed.refspeed_1647749038565.pdf
CPU2017.222.intspeed.refspeed_1647749038710.pdf
CPU2017.223.intspeed.refspeed_1647749039019.pdf
CPU2017.210.intspeed.refspeed_1647749039298.pdf
CPU2017.229.fpspeed.refspeed_1647749039693.pdf
CPU2017.230.fpspeed.refspeed_1647749039845.pdf
float-results_1647749040086.pdf
CPU2017.227.fpspeed.refspeed_1647749040397.pdf
native_1647749040746.pdf
CPU2017.228.fpspeed.refspeed_1647749041294.pdf
CPU2017.160.intspeed.refspeed_1647749041459.pdf
qemu_1647749041621.pdf
results_1647749041838.pdf
rv8_1647749042155.pdf
Intel-SDM_1647749067968.pdf
RISC-V-Spec_1647749069842.pdf
System-V-ABI_1647749070170.pdf
fp-register-usage_1647749017351.pdf
register-usage_1647749017480.pdf
angebot_1647749017801.pdf
old_1647749017837.pdf
expo_1647749018078.pdf
orcid_1647749019764.pdf
cache-flow_1647749019904.pdf
chaining-chained_1647749019908.pdf
chaining-unchained_1647749019937.pdf
final_1647749020646.pdf
orcid_1647749021932.pdf
blocktranslate_1647749021940.pdf
cache-flow_1647749022039.pdf
chained_1647749022042.pdf
components_1647749022061.pdf
jal_follow_1647749022078.pdf
strategy_1647749022116.pdf
structure_1647749022155.pdf
unchained_1647749022352.pdf
intermediate_1647749023643.pdf
Fakultaet_Logo_RGB_1647749024371.pdf
Universitaet_Logo_RGB_1647749025047.pdf
Universitaet_Logo_sw_RGB_1647749025313.pdf
Universitaet_Logo_weiss_1647749025337.pdf
orcid_1647749025362.pdf
large-transcript_1647749025485.pdf
gzip_1647749025538.pdf
sort_1647749025660.pdf
2016optimizing_1647749027061.pdf
bintrans_1647749027323.pdf
clark-rv8-carrv2017_1647749027775.pdf
chaining-chained_1647749027867.pdf
chaining-unchained_1647749027905.pdf
register-usage_1647749027909.pdf
strategy_1647749027929.pdf
paper_1647749028704.pdf
CPU2017.070.intspeed.test_1647749029437.pdf
CPU2017.076.intspeed.test_1647749029731.pdf
CPU2017.146.fpspeed.test_1647749030037.pdf
CPU2017.071.intspeed.test_1647749030636.pdf
CPU2017.143.intspeed.refspeed_1647749032513.pdf
CPU2017.138.intspeed.refspeed_1647749032689.pdf
CPU2017.159.intspeed.refspeed_1647749032869.pdf
dbt_1647749033252.pdf
dbt-rerun-625_1647749033428.pdf
dbt_1647749033814.pdf
dbt_1647749034003.pdf
dbt_1647749034380.pdf
dbt_1647749034748.pdf
dbt_1647749035022.pdf
CPU2017.207.intspeed.refspeed_1647749035374.pdf
CPU2017.206.intspeed.refspeed_1647749035655.pdf
CPU2017.211.intspeed.refspeed_1647749036017.pdf
CPU2017.213.intspeed.refspeed_1647749036410.pdf
CPU2017.212.intspeed.refspeed_1647749036697.pdf
CPU2017.214.intspeed.refspeed_1647749037064.pdf
CPU2017.215.intspeed.refspeed_1647749037277.pdf
CPU2017.216.intspeed.refspeed_1647749037525.pdf
CPU2017.217.intspeed.refspeed_1647749037798.pdf