  Hardware aliasing occurs when the same logical address can access different
physical memory locations. This is a problem for software on some embedded
systems and more generally when hardware becomes faulty in irretrievable
locations, such as on a Mars Lander. We show how to work around the hardware
problem with software logic, compiling code so it works on any platform with
hardware aliasing with hidden determinism. That is: (i) a copy of an address
accesses the same location, and (ii) repeating an address calculation exactly
will repeat the same access again. Stuck bits can mean that even adding zero to
an address can make a difference in that environment so nothing but a
systematic approach has a chance of working. The technique is extended to
generate aliasing as well as compensate for it, in so-called chaotic
compilation, and a sketch proof is included to show it may produce object code
that is secure against discovery of the programmer's intention. A prototype
compiler implementing the technology covers all of ANSI C except
longjmp/setjmp.
