Machine code generation for C++
Go to file
2021-03-13 14:28:05 +01:00
.github [Bug] [Critical] [ABI] Update that fixes all problems discovered by comparison with LLVM-MC 2021-02-03 09:36:11 +01:00
src Added support for PROT_MAX() in VirtMem::alloc() and refactored VirtMem a bit 2021-03-06 09:05:42 +01:00
test Split assembler tests so they can compile much faster with GCC 2021-03-13 14:28:05 +01:00
tools [Bug] [Critical] [ABI] Update that fixes all problems discovered by comparison with LLVM-MC 2021-02-03 09:36:11 +01:00
.editorconfig Added .editorconfig 2020-02-08 10:13:44 +01:00
.gitignore Refactored register allocator asm Compiler. (#249) 2019-07-16 01:24:22 +02:00
CMakeLists.txt Split assembler tests so they can compile much faster with GCC 2021-03-13 14:28:05 +01:00
LICENSE.md Improved CI and enhanced project cosmetics (proper license header and include guards) 2020-05-03 20:06:27 +02:00
README.md [ABI] Added more AVX_VNNI instructions, added MOVABS for explicit Imm64 encodings, added more assembler tests 2021-01-26 01:00:29 +01:00

AsmJit

AsmJit is a lightweight library for machine code generation written in C++ language.

See asmjit.com page for more details, examples, and documentation.

Documentation

Breaking Changes

Breaking the API is sometimes inevitable, what to do?

Project Organization

  • / - Project root.
    • src - Source code.
      • asmjit - Source code and headers (always point include path in here).
        • core - Core API, backend independent except relocations.
        • arm - ARM specific API, used only by ARM and AArch64 backends.
        • x86 - X86 specific API, used only by X86 and X64 backends.
    • test - Unit and integration tests (don't embed in your project).
    • tools - Tools used for configuring, documenting, and generating files.

TODO

  • Core:
    • Add support for user external buffers in CodeBuffer / CodeHolder.
    • Register allocator doesn't understand register pairs, affected instructions:
      • v4fmaddps, v4fmaddss, v4fnmaddps, v4fnmaddss
      • vp4dpwssd, vp4dpwssds
      • vp2intersectd, vp2intersectq
  • Ports:
    • ARM/Thumb/AArch64 support.

Support

Notable Donors List:

Authors & Maintainers