xenia/src/alloy
2014-10-26 22:19:02 -07:00
..
backend Reset cr6 on vector compare, fix NOT_V128. 2014-10-26 22:19:02 -07:00
compiler Fixing add_carry (+typos). 2014-08-22 21:58:28 -07:00
frontend Reset cr6 on vector compare, fix NOT_V128. 2014-10-26 22:19:02 -07:00
hir Fixing vsel. 2014-09-01 13:00:00 -07:00
runtime Fixing livelock caused by lf stuff (or at least making it harder to hit). 2014-10-26 19:05:30 -07:00
test Fixing livelock caused by lf stuff (or at least making it harder to hit). 2014-10-26 19:05:30 -07:00
alloy-private.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
alloy.cc Running clang-format on alloy. 2014-07-10 20:20:00 -07:00
alloy.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
arena.cc Removing xenia/malloc.* 2014-08-20 22:22:47 -07:00
arena.h Cleaning up some clang issues. 2014-08-21 22:27:33 -07:00
delegate.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
memory.cc Fixing livelock caused by lf stuff (or at least making it harder to hit). 2014-10-26 19:05:30 -07:00
memory.h Fixing livelock caused by lf stuff (or at least making it harder to hit). 2014-10-26 19:05:30 -07:00
README.md Create README.md 2014-08-20 11:35:22 -07:00
reset_scope.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
sources.gypi Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
string_buffer.cc Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
string_buffer.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
type_pool.h Removing alloy/core.h. 2014-08-21 20:49:47 -07:00
vec128.h Support for vector expectations and memory init in alloy-ppc-test. 2014-10-25 11:43:24 -07:00

alloy: small dynamic recompiler engine

Alloy is a transpiler framework that allows for pluggable frontends for decoding guest machine instructions (such as PPC) and pluggable backends for generating host code (such as x64). It features an SSA IR designed to model machine instructions and vector operations and compilation passes that seek to efficiently optimize previously-optimized code.

Future versions will cache generated code across runs and enable offline precompilation.

Frontends

Frontends are responsible for translating guest machine instructions into IR. Information about the guest machine and ABI is used to support efficient CPU state accesses and debug information.

  • PPC64 with Altivec extenions

Backends

A backend takes optimized IR and assembles an implementation-specific result. The backend is also responsible for executing the code it generates and supporting debugging features (such as breakpoints).

  • IVM: bytecode interpreter
  • x64: IA-64 with AVX2 code generator