ByteMover

From Esolang
Jump to: navigation, search
This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by adding some more information.

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.