[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.