加载地址与运行地址
2012-04-01 16:07
169 查看
要是做过uboot开发,就是会遇到过运行地址与加载地址的概念,确实比较抽象与模糊,网上很多解释都是说运行地址就是加载地址,还有就是他们有很大的关系。其实他们根本一点关系都没有,但是很巧合他们很多时候都是相同的,加载地址:就是程序所被加载到RAM的地址,也就是程序在RAM或者norflash的地址,因为程序在硬盘或者nandflash中时不能运行,所以需要加载到RAM中,这个地址就是加载地址,比如s3c2440在RAM的地址0x30000000,所有加载地址就是0x30000000。运行地址:就是程序在编译的时候确定的地址,比如你编译时指定地址为0x10000000,那么你程序就会以这个地址为参考,比如说在距离程序的0x100出定义一条函数fuc(),然后执行A=fuc(),那么这时候就会把0x10000100这个值赋给A。所以就说加载地址与运行地址完全没有关系,但是为什么很多时候加载地址与运行地址要相同,比如说指定了运行地址为0x30000000,但是加载地址为0x00000000,要是执行了上面说的fuc()函数,PC指针就跳转0x30000100,但是去了哪里才发现没有代码,那么程序就会出错。要是程序中没有涉及到地址跳转,和地址取值,或者用的是相对PC值,加载地址和运行定义不相同,程序也可以正常运行。
相关文章推荐
- 运行时域和加载时域(运行地址和加载地址)
- ARM裸机编程 (汇编运行地址,链接地址,加载地址,存储地址 位置无关码、位置有关码)
- 运行地址和加载地址
- kernel加载运行地址到RAM起始地址间一段内存的作用
- 关于运行地址和加载地址的几个很多初学者模糊不清的问题我在这里总结一下
- 运行地址和加载地址
- 运行地址,链接地址,加载地址,存储地址 位置无关码、位置有关码
- 运行地址和加载地址
- 加载地址与运行地址
- 运行地址和加载地址
- 重新分析: 加载地址 存储地址 链接地址 运行地址
- 加载地址、运行地址
- 《C编译原理》程序的加载地址与运行地址
- 汇编运行地址,链接地址,加载地址,存储地址 位置无关码、位置有关码 <二>
- 怎么修改kernel的加载地址和运行地址
- 代码的加载地址与运行地址
- 关于加载地址和运行地址理解
- U-Boot移植——链接地址、运行地址、加载地址、存储地址
- 代码的加载地址与运行地址
- 预加载2+网页加载条 可以直接复制代码运行,如果图片地址丢失的话可以自己替换掉