DynASM is a preprocessor and tiny runtime library for creating assemblers and JIT compilers in C or C++.

DynASM was written for, and is maintained as part of, LuaJIT. LuaJIT 1 used DynASM in a JIT role. LuaJIT 2 doesn't use DymASM in a JIT role, but LuaJIT 2's interpreter is hand-written in assembly, and it uses DynASM as a powerful cross-platform assembler.

To get the latest copy of DymASM, run the following:

git clone http://luajit.org/git/luajit-2.0.git
cd luajit-2.0/dynasm

The official documentation for DynASM is extremely spartan, which can make it difficult to get started with DynASM. For using DynASM in a JIT role, this unofficial documentation's tutorial is recommended as a starting point. Once you're more familiar with DynASM, the reference and instruction listing pages are recommended reading for fleshing out your DynASM knowledge.

Note that DynASM supports the x86, x64, ARM, PowerPC, and MIPS instruction sets, but this unofficial documentation only covers x86 and x64.