doc: scripts to run embedmd on markdown files
This will help keep READMEs in sync with code. Also adds a README for the add example. Updates #14
This commit is contained in:
49
examples/add/README.md
Normal file
49
examples/add/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# add
|
||||
|
||||
Add two numbers with `avo`.
|
||||
|
||||
The [code generator](asm.go) is as follows:
|
||||
|
||||
[embedmd]:# (asm.go)
|
||||
```go
|
||||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
. "github.com/mmcloughlin/avo/build"
|
||||
)
|
||||
|
||||
func main() {
|
||||
TEXT("Add", "func(x, y uint64) uint64")
|
||||
Doc("Add adds x and y.")
|
||||
x := Load(Param("x"), GP64v())
|
||||
y := Load(Param("y"), GP64v())
|
||||
ADDQ(x, y)
|
||||
Store(y, ReturnIndex(0))
|
||||
RET()
|
||||
Generate()
|
||||
}
|
||||
```
|
||||
|
||||
We use a [`go:generate`](https://blog.golang.org/generate) line to produce the assembly and Go stub files together.
|
||||
|
||||
[embedmd]:# (add_test.go go /.*go:generate.*/)
|
||||
```go
|
||||
//go:generate go run asm.go -out add.s -stubs stub.go
|
||||
```
|
||||
|
||||
This produces [`add.s`](add.s) as follows:
|
||||
|
||||
[embedmd]:# (add.s)
|
||||
```s
|
||||
// Code generated by command: go run asm.go -out add.s -stubs stub.go. DO NOT EDIT.
|
||||
|
||||
// func Add(x uint64, y uint64) uint64
|
||||
TEXT ·Add(SB), $0-24
|
||||
MOVQ x(FP), AX
|
||||
MOVQ y+8(FP), CX
|
||||
ADDQ AX, CX
|
||||
MOVQ CX, ret+16(FP)
|
||||
RET
|
||||
```
|
||||
Reference in New Issue
Block a user