A computer binary translator translates at least a segment of a binary
representation of a program from a first instruction set architecture to
a second instruction set architecture. A sequence of side-effects in the
translation differs from a sequence of side-effects in the original. The
translation distinguishes memory loads that are believed to be directed
to well-behaved memory from memory loads that are believed to be directed
to non-well-behaved memory device(s). Instruction execution circuitry
identifies a memory reference that has a side-effect that has been
reordered by translation, the memory reference having been believed at
translation time to be directed to well-behaved memory but at execution
it is found that the reference cannot be guaranteed to be well-behaved.
The instruction execution circuitry identifies whether the difference in
side-effect order may have a material effect on the execution of the
program. A roll-back program state is established, and execution of the
original code resumes.