avo makes high-performance Go assembly easier to write, review and maintain. The avo package presents a familiar assembly-like interface that simplifies development without sacrificing performance. Use Go control structures for assembly generation; avo programs are Go programs. Register allocation: write functions with virtual registers and avo assigns physical registers for you. Automatically load arguments and store return values: ensure memory offsets are correct for complex structures. Generation of stub files to interface with your Go package. APIs subject to change while avo is still in an experimental phase. You can use it to build real things but we suggest you pin a version with your package manager of choice. go run this code to see the assembly output. To integrate this into the rest of your Go package we recommend a go:generate line to produce the assembly and the corresponding Go stub file.
Features
- Extracting symbol and type information from Go binaries
- Dumping the contents of Go binaries in a human-readable format
- Extracting Go version and build information
- Extracting package import information
- Extracting Go runtime information
- Extracting Go garbage collection information