I was wondering what the smallest set of opcodes would be for a turing complete language.

Brainfuck seems to indicate that you need 8 opcodes:

  • Move the data pointer left or right
  • Increment / decrement the data pointer
  • Write the data pointer to the output
  • Read input to the data pointer
  • Loop until the data pointer is zero