ByteMover

ByteMover is an OISC CPU design based on the ByteByteJump concept.

An instruction consists of 3 consecutive fields A, B and C. A and B occupy 24 bits (3 bytes) each. C occupies 16 bits (2 bytes) for a total of 64 bits (8 bytes) per instruction A, B and C are stored in memory as little-endian values.

The operation performed is:
 * 1) Copy one byte from address A to address B.
 * 2) Jump to instruction C (at address C * 8).

The whole instruction is read as a 64-bit word from memory before it is executed. This means that no program counter is needed.

24-bit source and destination addresses means 16 MiB of addressable RAM. The 16-bit jump index can address 65536 instructions, each taking up 8 bytes. This means that only the lowest 512 KiB can be used for executing code, unless some sort of bank switching scheme is devised.