Cleanup
Add comments as I was a little bit confused by code.
Do not create cache pages beyond ROM if kCacheSize is large
Avoid backing up registers when we shouldn't
Print registers to log (required for tests)