码迷,mamicode.com
首页 > 其他好文 > 详细

关于重定位的一点理解

时间:2015-11-12 06:43:12      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:arm   重定位

运行地址:程序定位的绝对地址,就是编译连接时定位的地址

加载地址:程序放置的地址

如果程序在flash中运行,运行地址和加载地址相同
如果程序存储在
flash中运行而是在RAM中运行,则加载地址和运行地址就不同,此时加载地址就是指向flash,运行地址指向RAM

 

 

重定位的一点感悟:

重定位就是当程序的加载地址和运行地址不同时,运行地址通过在编译连接过程中的连接脚本完成将可执行文件链接到程序真实运行的地址位置(可以理解为将已经加载的程序复制一份到链接地址处)之后通过长跳转将PC指针从加载地址处重新定位到链接地址处。

 

简单理解为:就是对于位置有关码的操作因为一些迫不得已的运行需求程序必须转换到另一个地址空间运行,此时就需要对PC指针进行操作,将PC指针指向实际运行的位置处,这时也就需要复制一份代码到该运行地址也就是所谓的链接地址

重定位过程需要在位置有关码之前的一段位置无关码来完成。换句话说就是在长跳转之前就要完成重定位,否则会发生运行错误。




本文出自 “嵌入式入门学习” 博客,请务必保留此出处http://liuxiaoniu.blog.51cto.com/10779102/1711930

关于重定位的一点理解

标签:arm   重定位

原文地址:http://liuxiaoniu.blog.51cto.com/10779102/1711930

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!