| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1610 人关注过本帖
标题:可以谈谈程序载入内存时的重定位吗
只看楼主 加入收藏
ZQDragon
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2010-6-8
结帖率:85.71%
收藏
已结贴  问题点数:30 回复次数:3 
可以谈谈程序载入内存时的重定位吗
查了一些资料,但有些迷糊  尤其是一些名称的理解:什么虚拟地址,相对虚拟地址等等。。
搜索更多相关主题的帖子: 载入 内存 
2010-07-03 23:46
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:30 
32位电脑,可寻址空间就是有32根地址线  就有2的32次方个状态,也就是4G个内存单元可被寻址。 高2G系统用,低2G是用户程序用。操作系统和CPU配合,使每个进程都可以独占使用2G空间。这2G空间,理论上来讲可以被任一进程任意使用,而且地址是从0开始到2G,线性连续的。 这就是虚拟地址,也叫虚拟地址空间。在这一大段空间中,定一个基址,比如0x00400000,那么对于0x00401000,可以说它的虚拟地址是 0x00401000,也可以说它的相对虚拟地址是0x00001000,一个PE文件可以自己指定基址,也可以使用默认,默认一般就是0x00400000,为了在文件内使用方便,一般就使用相对于基址的地址,即相对虚拟地址。
如果程序载入内存时,是按照默认的或者程序自己指定的基址载入的,那么就不需要重定位,一般EXE文件不需要重定位。
DLL文件一般都是需要重新定位的,因为DLL文件是动态载入的,每次载入地址不同。

下个汇编语言的书看看,如果想深入认真的学,干脆买一本仔细看看吧。
东一榔头西一锤的 还不如系统的学习一下。 靠发帖子比较难以获得系统的知识。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-07-04 16:45
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用你们都要疼我哦在2010-7-4 16:45:18的发言:

32位电脑,可寻址空间就是有32根地址线  就有2的32次方个状态,也就是4G个内存单元可被寻址。 高2G系统用,低2G是用户程序用。操作系统和CPU配合,使每个进程都可以独占使用2G空间。这2G空间,理论上来讲可以被任一进程任意使用,而且地址是从0开始到2G,线性连续的。 这就是虚拟地址,也叫虚拟地址空间。在这一大段空间中,定一个基址,比如0x00400000,那么对于0x00401000,可以说它的虚拟地址是 0x00401000,也可以说它的相对虚拟地址是0x00001000,一个PE文件可以自己指定基址,也可以使用默认,默认一般就是0x00400000,为了在文件内使用方便,一般就使用相对于基址的地址,即相对虚拟地址。
如果程序载入内存时,是按照默认的或者程序自己指定的基址载入的,那么就不需要重定位,一般EXE文件不需要重定位。
DLL文件一般都是需要重新定位的,因为DLL文件是动态载入的,每次载入地址不同。

下个汇编语言的书看看,如果想深入认真的学,干脆买一本仔细看看吧。
东一榔头西一锤的 还不如系统的学习一下。 靠发帖子比较难以获得系统的知识。

同意
2010-07-05 12:04
ljlover123
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-7-25
收藏
得分:0 
解释的很好!
2010-07-25 22:03
快速回复:可以谈谈程序载入内存时的重定位吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014670 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved