Types
-----
=============== ====
``void`` Nothing. E.g. if an instruction yields no result.
``metadata`` Additional information attached to various things in the assembly.
``label`` Basic block.
``time`` Simulation time.
``iN`` Integer of N bits.
``nN`` Enumerated type of N values.
``lN`` Logic type with 9 possible values ``UX01ZWLH-`` (see IEEE 1164)
``sN`` Strong logic type with 4 possible values ``01ZX`` (see IEEE 1800)
``T*`` Pointer to value of type T.
``T$`` Signal carrying a value of type T.
``[N x T]`` Array containing N elements of type T.
``{T0,T1,…}`` Struct containing fields of types T0, T1, etc.
``T (T0,T1,…)`` Function returning value T, taking arguments of type T0, T1, etc.
=============== ====
Names
-----
=========== ====
**Global Visibility**
-----------------
``@<name>`` Global name. Visible in the symbol table of the module.
``!<name>`` Metadata name. Visible in the symbol table of the module.
**Local Visibility**
-----------------
``%<name>`` Local name. Not visible beyond the scope of the module or section it is declared in.
``!<int>`` Temporary local metadata name.
``%<int>`` Temporary local name.
=========== ====
Constants
---------
===== ====
false Alias for ``i1 0``
true Alias for ``i1 1``
===== ====
Instructions
------------
======== ==== ====
Mnemonic Description
======== ==== ====
type M Global type alias
const M Global constant
func M Function definition
proc M Process definition
entity M Entity definition
decl M Function, process, or entity declaration
**Memory**
--------------------
load FP Load a value from memory.
store FP Store a value to memory.
var FP Allocate memory on the stack.
alloc FP Allocate memory on the heap.
free FP Free memory on the heap.
**Signals**
--------------------
probe PE Sample the value of a signal.
drive PE Change the value of a signal
sig E Allocate a new signal.
**Control Flow**
--------------------
wait P
halt FP
br FP
ret F
call FPE
inst E
**Comparison**
--------------------
icmp FPE Integer comparison
lcmp FPE Logic comparison
**Logic**
--------------------
and FPE
or FPE
xor FPE
not FPE
**Arithmetic**
--------------------
add FPE
sub FPE
mul FPE
udiv FPE
sdiv FPE
**Restructuring**
--------------------
trunc FPE Reduce width of integer.
ext FPE Increase width of integer.
insert FPE Change the value of an array/structure element by index.
extract FPE Obtain the value of an array/structure element by index.
cat FPE Concatenate values.
slice FPE Obtain a part of an integer.
**Data Flow**
--------------------
mux FPE Select among a list of values, based on a "selection" value.
reg E Storage element that keeps state.
======== ==== ====
Missing
-------
* conversion lN to sN and back
* conversion iN to lN/sN and back
* working with time values
* choosing strong/weak drive on lN, choosing high impedance or weak
* a way to declare funcs, procs, and entities
Details
-------
* ``icmp [eq|ne|sgt|sge|slt|sle|ugt|uge|ult|ule]``
* ``lcmp [eq|ne]``
* ``ext [zero|sign]``