Files
avo/examples/data
Michael McLoughlin 602bb5197c build: unify Label function signatures
The Context.Label method and LABEL global function did not agree. Also
breaks the convention I'd like to set that capitalized functions must
agree with existing Go assembly syntax.

To help avoid a conflict with `avo.Label`, attributes were moved to
their own package.

Fixes #35
2019-01-05 18:18:49 -08:00
..
2019-01-05 18:18:49 -08:00
2018-12-27 11:57:46 -08:00
2018-12-27 23:09:44 -08:00

data

Constructing data sections in avo.

A data section is declared with the GLOBL function, and values are specified with DATA. The size of the data section will grow as values are added to it.

	bytes := GLOBL("bytes", RODATA|NOPTR)
	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))

The GLOBL function returns a reference which may be used in assembly code. The following function indexes into the data section just created.

	TEXT("DataAt", "func(i int) byte")
	Doc("DataAt returns byte i in the 'bytes' global data section.")
	i := Load(Param("i"), GP64())
	ptr := Mem{Base: GP64()}
	LEAQ(bytes, ptr.Base)
	b := GP8()
	MOVB(ptr.Idx(i, 1), b)
	Store(b, ReturnIndex(0))
	RET()