tests/alloc/gp8: allocator test using all 8-bit registers (#102)
Updates #43
This commit is contained in:
committed by
GitHub
parent
15d6a9a17e
commit
cfc6ecac41
39
tests/alloc/gp8/asm.go
Normal file
39
tests/alloc/gp8/asm.go
Normal file
@@ -0,0 +1,39 @@
|
||||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
. "github.com/mmcloughlin/avo/build"
|
||||
. "github.com/mmcloughlin/avo/operand"
|
||||
. "github.com/mmcloughlin/avo/reg"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// n is the number of 8-bit registers to use.
|
||||
// 15 low-byte registers (excluding SP)
|
||||
// 4 high-byte registers AH,BH,CH,DH
|
||||
const n = 19
|
||||
|
||||
TEXT("GP8", NOSPLIT, "func() uint8")
|
||||
Doc("GP8 returns the sum 1+2+...+" + strconv.Itoa(n) + " using " + strconv.Itoa(n) + " distinct 8-bit registers.")
|
||||
|
||||
// Allocate registers and initialize.
|
||||
x := make([]Register, n)
|
||||
for i := 0; i < n; i++ {
|
||||
x[i] = GP8()
|
||||
MOVB(U8(i+1), x[i])
|
||||
}
|
||||
|
||||
// Sum them up.
|
||||
for i := 1; i < n; i++ {
|
||||
ADDB(x[i], x[0])
|
||||
}
|
||||
|
||||
// Return.
|
||||
Store(x[0], ReturnIndex(0))
|
||||
RET()
|
||||
|
||||
Generate()
|
||||
}
|
||||
Reference in New Issue
Block a user