categories of registers and and storage in them
RAM addresses or addresses of I/O devices. For example, in x86 architecture an IP (instruction pointer) register holds the memory address of the next instruction that is going to be read and executed. This register cannot be accessed directly (it can be modified by jumps though). Also, in x86 an SP (stack pointer) register shows the top of the stack structure (mostly used to hold local variables of functions) and is implicitly modified by push, pop, call, ret instructions (and interrupts). Of course, there are more examples.