运行地址:程序定位的绝对地址,就是编译连接时定位的地址
加载地址:程序放置的地址
如果程序在flash中运行,运行地址和加载地址相同
如果程序存储在flash中运行而是在RAM中运行,则加载地址和运行地址就不同,此时加载地址就是指向flash,运行地址指向RAM
重定位的一点感悟:
重定位就是当程序的加载地址和运行地址不同时,运行地址通过在编译连接过程中的连接脚本完成将可执行文件链接到程序真实运行的地址位置(可以理解为将已经加载的程序复制一份到链接地址处)之后通过长跳转将PC指针从加载地址处重新定位到链接地址处。
简单理解为:就是对于位置有关码的操作因为一些迫不得已的运行需求程序必须转换到另一个地址空间运行,此时就需要对PC指针进行操作,将PC指针指向实际运行的位置处,这时也就需要复制一份代码到该运行地址也就是所谓的链接地址
重定位过程需要在位置有关码之前的一段位置无关码来完成。换句话说就是在长跳转之前就要完成重定位,否则会发生运行错误。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。