GenAsm (language)
From Mill Computing Wiki
The genAsm assembly language is a low-level dataflow language for writing programs to be executed on the Mill processors. The language is accepted by the genAsm assembler, which create ELF files suitable as input to the prelinker or specializer. The assembler is intended for use when high-level language compilers are unable to provide a desired access to Mill hardware facilities.
Syntax in BNF:
BNF: Terminal keywords and symbols are italic; meta-symbols are bold.
program ::= moduleHead moduleBody-option
moduleHead ::= module identifier
moduleBody ::= functionDef-sequence
functionDef ::= func identifier parmsBinding resultSpec-option { functionBody }
parmsBinding ::= ( parmList-option )
parmList ::= parm | parm , parmList
arg ::= widthTag identifier
widthTag ::= b | h | w | d | q | bv | hv | wv | dv | qv
resultSpec ::= -> widthTag | -> ( resultList-option )
resultList ::= widthTag | widthTag , resultList
functionBody ::= expressionList-option
expressionList ::= expression | expression ; expressionList
expression ::= secondary-option |
expression invoke-option |
expression binding |
expression pick
secondary ::= primary | secondary call
primary ::= number widthSpec-option | argId | boundId | funcId | ( expression )
widthSpec ::= : widthTag
call ::= ( argList-option )
argList ::= arg | arg , argList
binding ::= -: identifier | -: bindings
bindings ::= { idList }
pick ::= ? expression : expression
idList ::= identifier | identifier , idList
invoke ::= opCall | opId secondary-option
opCall ::= opId ( argList-option )