Files
avo/examples/ext
Michael McLoughlin 9c70781236 all: go 1.17 (#197)
Bump CI Go versions to 1.16 and 1.17.
Update build tags with `go:build` equivalents.
Upgrade asmfmt tool for new `go:build` support.

Updates #183
2021-10-29 01:18:34 -07:00
..
2019-01-22 22:35:01 -08:00
2021-10-29 01:18:34 -07:00
2019-01-22 22:35:01 -08:00
2019-01-22 22:35:01 -08:00
2019-01-22 22:35:01 -08:00
2019-01-22 22:35:01 -08:00

ext

Demonstrates how to use external types in an avo function signature.

In this case, you will need to write the function stub yourself.

package ext

import "github.com/mmcloughlin/avo/examples/ext/ext"

// StructFieldB returns field B.
func StructFieldB(e ext.Struct) byte

Then in place of the usual TEXT declaration we use Implement to state that we are beginning the definition of a function already declared in the package stub file.

	Package("github.com/mmcloughlin/avo/examples/ext")
	Implement("StructFieldB")
	b := Load(Param("e").Field("B"), GP8())
	Store(b, ReturnIndex(0))
	RET()

Finally, in this case the go:generate line is different since we do not need to generate the stub file.

//go:generate go run asm.go -out ext.s