The VM is designed to control logic so everything is mapped into a 32 bit virtual register for simplicity. The assembly language support a large range of data types, but the VM will by default treat everything as a 32 bit register to keep it simple and fast.
The assembly language do however support a range of data-types:
Bit | A single bit data-type that can be used to create bit-fields. Used in math it is treated as an unsigned integer. |
Byte | A byte is 8 bits. |
Uint16 | An unsigned 16 bit integer. |
Int16 | A signed 16 bit integer. |
Uint32 | An unsigned 32 bit integer. |
Int32 | A signed 32 bit integer. |
Float32 | A 32 bit floating point. |
String | A text string. |
bool | A boolean value that can be true or false. |
Object | Data structure used to create data-types based on existing data-types. |
Enum | A data-type that only allow a of constant values. |
Arrays are supported for all data-types by adding [] after the variable name. Operations can use ranges as a[0..9].
Adding “packed” to a Object will force it to be bit-packed. This is designed to allow the VM to encode/decode bit-packed Messages etc.
As for other data-types we could also support double64, uint64 etc.