![]() For an executable, the not colliding with things that may arrive later part means avoiding the region of the address space that tends to fill with DLLs. ![]() This means not colliding with things already in the address space (which will force you to relocate) as well as not colliding with things that may arrive in the address space later (forcing them to relocate). ![]() The goal in choosing a base address is to minimize the likelihood that modules will have to be relocated. But some choices for base address are better than others. The only technical requirement for the base address of an EXE is that it be a multiple of 64KB. It has to do with the amount of address space mapped by a single page directory entry on an x86 and a design decision made in 1987. Why that particular value for EXEs? What’s so special about 4 megabytes The default base address for a DLL is 0x10000000, but the default base address for an EXE is 0x00400000. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |