QSMM assembler programs are the means of:
The use of assembler programs relies heavily on instruction meta-classes, instruction classes, and instruction class sets registered for a multinode model. The name of an instruction meta-class and the text parameters of an instruction class derived from the instruction meta-class identify assembler instructions belonging to the instruction class in assembler programs. Assembler instructions defined by instruction classes can be user instructions with custom names or mixed-type instructions with fixed names. There is also a set of built-in assembler instructions with fixed names.
A handle of qsmm_prg_t type refers to a memory representation of a plain assembler program specifying a probability profile for a single node or to a memory representation of a compound assembler program consisting of multiple plain assembler programs specifying probability profiles for multiple nodes.
A memory representation is convertible to an assembler program text and vice versa.
Information on assembler instructions is accessible by their indices in a memory representation of a plain assembler program.
Disassembling a node is converting its state model to a plain assembler program. Assembling a node is converting a plain assembler program to a probability profile for the state model. A special mode of assembling a node is storing its assembler program as a template for subsequent disassembling. In this case, a learned disassembled program is a template assembler program with learned probabilities replacing profile probabilities specified in the template program.
A plain assembler program can declare probability variables and specify profile probabilities as their initial values.
A probability variable can be a controlled probability variable or output probability variable.
The instruction class set of a node specifies a set of allowed names of controlled probability variables.
Changing the value of a controlled probability variable of a node results in changing one or more profile probabilities for its state model.
Output probability variables are the means of fetching particular probabilities from a learned state model of a node.
Output probabilities arrays hand over learned probabilities for case branches of choice instruction blocks.
Cloning a probability profile is helpful if multiple nodes have the same probability profile. It is faster to clone a probability profile from a node to other nodes than to assemble all the nodes using the same assembler program. A special cloning mode is deferred cloning a probability profile. This mode can decrease memory consumption by a multinode model.
Unloading the probability profile of a node additionally clears learned state model of the node and breaks its correspondence with a node providing a source probability profile cloned in deferred mode.
The assembler preprocessor can preprocess an assembler program text before parsing it. The preprocessor provides capabilities for including other assembler source files in a preprocessed source file, defining and expanding basic macros, and generating unique location labels to produce a correct assembler program when expanding the same macro multiple times.