This section documents the AOT NRO. There are only two symbols from NRO which the main-codebin does lookup for and uses: "SetGekkoMemoryPointer" and "GetStatifierInfo".
+
+
During initialization, <code>nn::os::AllocateAddressRegion</code> is used with size 0x100200000. Then <code>nn::os::AllocateMemoryPages</code> is used (which uses [[SVC#MapPhysicalMemory|svcMapPhysicalMemory]]):
+
* base+0 size 0x1000 is allocated.
+
* base+0x80000000 size 0x1800000 is allocated.
+
* base+0xE0000000 size 0x4000 is allocated.
+
* base+0xFFF00000 size 0x200000 is allocated.
+
+
Initially SetGekkoMemoryPointer is called with base+0x80000000, however at some point it's called (?) with base+0.
+
+
The AOT NRO does all main-memory accesses by accessing {global ptr set by SetGekkoMemoryPointer}+{ppc_addr}. Therefore, above base+0 == ppc_addr 0x0. Since svcMapPhysicalMemory is used above, attempting to access any PPC-addrs not in the allocated regions above will result in the emulator crashing due to accessing unmapped memory - accessing non-PPC emulator data with invalid PPC-addrs is not possible. These crashes may happen when attempting to run a different .dol with the emulator as previously mentioned.