rework Registers to use more C++-y features for initialization
make Registers::total_registers() multi-architecture aware