Boxedwine emulates an x86 CPU running in protected mode. In protected mode, page tables are used. See the Wikipedia entry on Page Tables for more info. With page tables, each application can see the full 32-bit address space as its own (minus whatever the OS reserves). This is achieved by mapping an address in a process to an address in RAM. This mechanism of mapping is done by the memory management unit (MMU Wikipedia entry).
In Boxedwine the MMU has been implemented in 2 ways, the first way is what I call the soft MMU. This is how most CPU emulators do page tables where there is an array that maps one address to another. For CPU emulators this page table is controlled by the emulated OS. In Boxedwine each process gets its own copy of the array which is stored in struct Memory, see soft MMU.
In addition to the soft MMU, Boxedwine implements a 2nd kind of MMU that takes advantage of a 64-bit memory space, this this only works on 64-bit builds. I call this the hard MMU, meaning the hardware takes care of the mapping. Each Boxedwine process will get a continuous 4GB of memory space (reserved, not allocated), for example 0x0000000300000000l. By having this address start at 0 for the bottom 32-bits I am able to map all emulated addresses to physical addresses by using a simple offset. See hard MMU for more details.