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.