only supports general propese registers and the PC but does what it should