Skip to main content
TVM instructions are encoded by sequences of bits, not all the same length, but a multiple of a byte in total. The immediate arguments essentially form a part of the instruction and have no special demarcation in a bitstream. This leads to some instructions sharing the same opcode prefix. For instance, the NOP instruction has the (full) opcode of 0x00, meaning the null byte, eight consequtive zero bits. At the same time the XCHG_0I family of instructions starts with 0x0—four consequtive zero bits—and continue with a four-bit immediate argument ranging from 0x1 to 0xF. Thus, in the table below the opcode column lists instructions’ prefixes (without arguments) in hexadecimal representing the corresponding sequence of bits (necessarily a multiple of four). While the opcode box on an instruction’s card shows the full TL-B schema for the instruction, including immediate arguments. The s[i] notation refers to the i-th stack slot counting from the top, and the top being the 0th slot. Particular stack slots are refernced directly as s0, s1 and so forth in TASM, FIFT and documentation, and are encoded simply by index in the binary. The [32(c+1)] PLDUZ notation means you need to pick a value for c, make the calculation and substitute the result. Say, you pick the value 2, then you write the instruction as 96 PLDUZ in FIFT. The reason is that 96 is the actual number of bits to read, while in the bitstream only the value for c is stored, while the TVM performs the calculation on its own.