社区
C++ 语言
帖子详情
地址映射和重定位的区别与联系?
clxye
2007-07-22 09:12:39
地址映射:程序装入内存以后,由操作系统将逻辑地址改为逻辑地址加上起始地址,得到实际的物理地址。
重定位:对目标程序中的指令和数据地址进行修改的过程。
这两个有什么区别和联系 ?
谢谢!!
...全文
1900
1
打赏
收藏
地址映射和重定位的区别与联系?
地址映射:程序装入内存以后,由操作系统将逻辑地址改为逻辑地址加上起始地址,得到实际的物理地址。 重定位:对目标程序中的指令和数据地址进行修改的过程。 这两个有什么区别和联系 ? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
星羽
2007-07-22
打赏
举报
回复
地址映射
为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射
重定位的结果还是逻辑地址
比如
mov eax,dword ptr [00400ffc]就是一句需要重定位的指令,当整个程序的起始地址位于00400000h处的时候,这句代码是正确的,假如将它移到00500000h处的时候,这句指令必须变成mov eax,dword ptr [00500ffc]才是正确的。这就意味着它需要重定位。
什么是静态地址
重定位
,它需要什么支持?什么是动态地址
重定位
,他需要什么支持?静态地址
重定位
与动态地址
重定位
有什么
区别
?...
在程序装入过程中随即进行的地址变换方式称为静态
地址映射
或静态
重定位
。 进行静态
重定位
要求被装入的程序本身是可以
重定位
的。(软件支持:
重定位
装入程序) 动态
地址映射
是指在程序执行期间,随着每条指令和数据的访问,自动地、连续地进行映射。 这种
重定位
的实现需要硬件的支持。最简单的硬件机构是一个
重定位
寄存器。
区别
: 1、 地址转换时机不同。静态地址
重定位
是在程序装入内存前完成从逻辑地址到物理...
地址
重定位
:静态
重定位
和动态
重定位
地址
重定位
就是操作系统将逻辑地址转变为物理地址的过程。。。也就是对目标程序中的指令和数据进行修改的过程 将逻辑地址空间
重定位
到物理地址空间的时机有三种: 1、程序编译连接时:符号绑定,各Obj模块的相对虚拟地址空间 -->统一的虚拟地址空间;可指定一个BaseAddress以优化装载时的
重定位
2、程序装入内存时: 虚拟地址空间 -->虚拟地址空间;如果映像文件中的Base Ad...
重定位
程序执行时,必须将地址空间变为绝对地址才能访问系统分配的内存 地址
重定位
实现了:从逻辑地址到物理地址的转换 按照
重定位
时机分类:静态
重定位
、动态
重定位
把逻辑地址转换程物理地址称为
地址映射
或
重定位
静态
重定位
与动态
重定位
动态
重定位
:在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地质映射)。 静态
重定位
:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成
重定位
,地址变换通常是在装入时一次完成的,以后不再改变,故称为静态
重定位
。 注意: 静态
重定位
的定位是在装入内存时就对程序里的各种地址、指向等进行修改;而动态
重定位
是在执行时才修改,因为可以不作任何改动直接装入内存。 ...
静态地址
重定位
与 动态地址
重定位
静态地址
重定位
:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成
重定位
,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态
重定位
。 优点:无需硬件支持 缺点:1)程序
重定位
之后就不能在内存中搬动了;2)要求程序的存储空间是连续的,不
C++ 语言
65,184
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章