In reply to rkg_:
You are still missing the 3rd argument in the read command. It has to be
sfr_regs[i].read(status, data, this);
Some registers returning a read value different to 0.
And you do not show the access policy of the registers. Some of them might be RO or WO.
Dou you have volatile registers?