Software Reversibility in Speculative Platforms: A reversible computing approach to state recovery