[x86_64] JIT backend

I will probably be working on a JIT backend for x86_64. Currently I am considering using Intel XED (https://intelxed.github.io/), which is a C library from Intel under Apache 2.0 license for encoding x86/x86_64 instructions. This tool (https://github.com/servo/rust-bindgen) can generate Rust bindings from C/C++ headers, with which I can easily use the library in our implementation.

As I implement the JIT backend, I expect a lot of changes to the existing code (as we switch from AOT focus to adapt both). So I suggest we postpone the JIT backend for aarch64 for a while until I have reached some milestones for x86_64, such as

  • JIT compile an add function
  • JIT compile a function that contains a loop
  • JIT compile a function that contains a call
  • JIT compile a function that uses VM runtime

Whether doing JIT or AOT is a build-time option for Zebu. Please let me know if you think this is problematic.

Edited by Yi Lin