{"repo":"mmcloughlin/avo","free":true,"listed":false,"github":"https://github.com/mmcloughlin/avo","clone":"git clone https://github.com/mmcloughlin/avo.git","description":"Generate x86 Assembly with Go","language":"Go","stars":2987,"topics":["go","golang","assembly","x86-64","code-generation"],"license":"BSD-3-Clause","category":"dev-tools","readme_excerpt":"Generate x86 Assembly with Go 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 For more about avo : Introductory talk \"Better x86 Assembly Generation with Go\" at dotGo 2019 (slides) Longer tutorial at Gophercon 2019 showing a highly-optimized dot product (slides) Watch Filippo Valsorda live code the rewrite of filippo.io/edwards25519 assembly with avo Explore projects using avo Discuss avo and general Go assembly topics in the #assembly channel of Gophers Slack Note: 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. Quick Start Install avo with go get : avo assembly generators are pure Go programs. Here's a function that adds two uint64 values: 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. After running go generate the a","default_branch":null,"files":null,"tree":[],"storefront":"/r/mmcloughlin","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mmcloughlin/avo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}