avo
A Go library for generating x86 assembly, letting Go control structures describe assembly programs that avo compiles into an assembly file and a Go stub.
avo lets a developer write Go programs that generate x86 assembly, using Go's own control structures rather than assembly syntax directly. It handles register allocation by assigning physical registers to virtual ones the programmer writes against, automatically loads arguments and stores return values with correct memory offsets for complex structures, and generates the stub file needed to call the resulting assembly from ordinary Go code.
A typical workflow defines a small Go program under a build-ignore tag that calls avo's API to describe a function, then runs that program to produce the assembly file and a matching Go stub. The project notes its APIs may still change while it is in an experimental phase, and recommends pinning a version. It requires the Go toolchain and is BSD-3-Clause licensed.