what is memory aliasing?
A typical microprocessor system works by having a CPU send an address to the memory subsystem along with either a read request or a write request containing a piece of data to be written.  Various other devices in the system will look at the addresses sent out from the CPU, decide whether they are "interesting", and react accordingly.

A typical memory subsystem will have an address input along with some control inputs, and a data input and output.  Some interface logic will look for the CPU to generate addresses that match certain criteria and, if such addresses are observed, signal the memory that it should read or write them (the memory subsystem will receive the lower portion of the address, which it will use to select an individual byte or word).

If a system has 64KB of memory mapped from 0x08000000-0x0800FFFF and the CPU issues request to write 0x99 to 0x08001234, then the memory will process that as a request to write 0x1234.  If the memory were also wired to respond to addresses 0x00000000-0x0000FFFF (which might be accomplished by simply having its interface logic ignore bit 27 of the address), then a request by the CPU to read address 0x00001234 would be seen by the memory as a request to read 0x1234 (the location that was previously written).

In many cases, the memory itself won't know or care that the write was done at a different address from the read.  It simply sees a write to what it regards as address 0x1234, and a read from that same address.