Bytecode format
---------------

The bytecode file is composed of the following sections:

 * 16-byte header
            [0:3]: Magic
            [4]:   VM format
 * Index: pointers to each one of the sections, up to 8
            Each pointer: 4 bytes
            Each count: 4 bytes
 * [0x0] Constants indexes: all constants (such as strings) used in the code
            * Table of 4-byte constant indexes with pointer to constant
 * [0x1] Functions indexes: Pointer to functions within the code
            [0:3]: function pointer
            [4:5]: number of parameters
            [6:7]: number of local variables
 * [0x2] Constants raw data
 * [0x3] Code: executable code
            [1-byte]:   operation
            [variable]: operand (see value encoding below)
 * [0x4] Debugging info
            ???

The max file size is 2 Gb.

## Values can be encoded in the following ways:
 * The type is defined by the operator.
 * Encoding varies according to the type:
    int:    use protobuf format
    float:  4-bit floating point
    string: int-defined length, followed by the string proper - no null terminator
 * Constant indexes and function ids are encoded as ints
