Go Passes Arguments in Registers: The Register ABI and Its Transparent Wrappers
Go’s internal ABI passes arguments in registers, uses fixed registers for the goroutine pointer and a zero value, and generates ABI wrappers so old assembly keeps working.