Files
avo/examples/data/asm.go
2018-12-27 11:57:46 -08:00

35 lines
723 B
Go

// +build ignore
package main
import (
"math"
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
)
func main() {
bytes := GLOBL("bytes")
DATA(0, U64(0x0011223344556677))
DATA(8, String("strconst"))
DATA(16, F32(math.Pi))
DATA(24, F64(math.Pi))
DATA(32, U32(0x00112233))
DATA(36, U16(0x4455))
DATA(38, U8(0x66))
DATA(39, U8(0x77))
// TEXT ·DataAt(SB),0,$0-9
TEXT("DataAt", "func(i int) byte")
i := Load(Param("i"), GP64v()) // MOVQ i+0(FP), AX
ptr := Mem{Base: GP64v()}
LEAQ(bytes, ptr.Base) // LEAQ b<>+0x00(SB), BX
b := GP8v()
MOVB(ptr.Idx(i, 1), b) // MOVB 0(BX)(AX*1), CL
Store(b, ReturnIndex(0)) // MOVB CL, ret+8(FP)
RET() // RET
Generate()
}