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 )