doc: README for sum example

Updates #14
This commit is contained in:
Michael McLoughlin
2019-01-01 16:04:37 -08:00
parent 8465c21c02
commit 51931ee673
2 changed files with 31 additions and 1 deletions

View File

@@ -1,7 +1,11 @@
# Examples
Feature demonstrations:
Simple functions:
* **[add](add):** Add two numbers. The "Hello World!" of `avo`.
* **[sum](sum):** Sum an array of numbers.
Features:
* **[args](args):** Loading function arguments.
* **[complex](complex):** Working with `complex{64,128}` types.

26
examples/sum/README.md Normal file
View File

@@ -0,0 +1,26 @@
# sum
Sum an array of `uint64`s.
[embedmd]:# (asm.go go /func main/ /^}/)
```go
func main() {
TEXT("Sum", "func(xs []uint64) uint64")
Doc("Sum returns the sum of the elements in xs.")
ptr := Load(Param("xs").Base(), GP64v())
n := Load(Param("xs").Len(), GP64v())
s := GP64v()
XORQ(s, s)
LABEL("loop")
CMPQ(n, operand.Imm(0))
JE(operand.LabelRef("done"))
ADDQ(operand.Mem{Base: ptr}, s)
ADDQ(operand.Imm(8), ptr)
DECQ(n)
JMP(operand.LabelRef("loop"))
LABEL("done")
Store(s, ReturnIndex(0))
RET()
Generate()
}
```