Nim AST DSL: dynasm ops: ... Pure Nim syntax, no string parsing.
Compile-time safety: unknown mnemonics (with "did you mean" hints), wrong arities and every statically detectable operand-shape mistake are reported with error() while the block expands, so broken assembly never reaches codegen. Structured Nim statements (let/var/if/for/...) still pass through untouched.
Debugging: compile with -d:dynasmDebug to print each block's generated Nim code at compile time.