Robert Clausecker <fuz(a)fuz.su> once said:
While I am aware of Rob's talk [1] on the basic
design ideas
and have read both the Plan 9 [2] and Go [3] assembler
manuals, many aspects of the design (such as the strange way
to specify static data) are unclear and seem poorly
documented.
[...]
[1]:
https://talks.golang.org/2016/asm.slide
[2]:
https://9p.io/sys/doc/asm.html
[3]:
https://golang.org/doc/asm
Note that the Plan 9 compilers do not actually generate
machine code. They build an intermediate abstract object
code that the linkers then translate into machine code.
The syntax used by the assemblers is essentially a textual
representation of that intermediate code. If you want to
understand the design and it's idiosyncrasies, focus on the
latter.
Cheers,
Anthony