- infinite loop of:
- fetch → fetch instruction from memory at current
PC
- decode → figure out instruction
- execute → execute instruction
fetch
- read instruction at
PC
- instruction: 2 bytes → two successive reads (or use
uint16_t to represent the instruction and read once)
- immediately increment
PC
- error prone if incrementing after
execute

decode
- read instruction using instruction format
- extract values to opcodes before decoding using
#define
execute
- nothing significant here, just execute the behavior through the
switch statement (or equivalent)