二进制入口是由编译器确定的,准确点说,是在链接的阶段确定的,这个值并不是一个特别固定的数值,只要不与操作系统的某些限制的区域有冲突,理论上说可以随便设置。
运行时,操作系统的加载器会根据可执行文件的入口参数把代码加载到指定位置并运行。
如果指定的位置已经被占用,操作系统有两种选择:1. 如果代码是可重定向的,根据重定向表把代码移动到另外一个位置上;2. 如果代码是不可重定向的,那么加载失败。
重定向是否允许,以及重定向表的设置,也是编译器控制的。