永发信息网

物理地址.内存地址和RVA地址有什么区别???

答案:2  悬赏:80  手机版
解决时间 2021-12-25 20:26
如题...改输入表时不清楚这些概念..没法进行
最佳答案
打个比喻:内存,段号,偏移量,存储单元的内容-》学校,班级,学号,具体的学生。通过班级和学号就可以找到对应的学生,内存的访问也类似,通过段号和段内偏移量访问对应的存储单元。

段可以理解为一片连续的内存空间块,开始处指的是这片空间的第一个字节。

对于一个16位的偏移量,它的取值范围是0--65535(2的16次方减去1),所以偏移量可以是1。

你可能混淆了概念,仔细的想一下学校,班级,学号,学生;这种关系就跟内存,段号,偏移量,存储单元的内容一样。 下面介绍一下相关虚拟地址(Relative Virtual Addresses)
PE格式文件中经常用到RVA,即相关虚拟地址,用在不知道基地址的情况下表示一个内存
地址。它需要加上基地址才能得到线性地址(Linear address)。
例如:假设一个可执行程序调入内存0x400000处并且程序从RVA 0x1560处开始执行。那
么正确的开始地址是0x401560。如果可执行程序调入0x100000处,则开始地址为0x101560。
因为PE文件的每一个段不必按同样的边界对齐方式调入,因此RVA地址的计算变得比较复
杂。例如,在文件中每一个段往往按512个字节的方式对齐,而在内存中可能以4096字节的方
式对齐。这方面的介绍可见下面的“SectionAlignment”、“FileAlignment”。举个例子,
假设你知道一个程序从RVA 0x1560开始执行,你想从那儿反汇编它。你发现内存中的段对齐方
式为4096并且.code段开始于内存RVA 0x1560并且有16384字节长;那么你可以知道RVA 0x156
0在这个段的0x560处。你又发现这个段在文件中以512字节方式对齐并且.code开始于文件0x8
00处,那现在你知道了可执行程序开始于0x800+0x560 = 0xd60处。
全部回答
以下纯属个人理解,可能有误 内存有物理内存和虚拟内存, 物理地址就是在现实中存储的地址, rva是一种算法,就是逻辑上的分区定位, 举个例子,有1号2号两个杯子,往一杯里倒水,物理地址指向的就是倒了水的那个杯子,rva指得就是杯子的编号,杯子的编号可以改变,但是杯子本身不会改变
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
水瓶座男生注定会孤独么
氯化铝什么颜色
如何选择厨房的面板
倾尽泠水接天月下一句
蓝江儿童城地址有知道的么?有点事想过去
长寿冠海棠是先长叶后花吗
朱明瑛唱的那个印度歌曲叫什么吗
保险买人寿还是平安
读“亚洲大陆与太平洋因热力作用形成的高空等
岫岩离大连多远
笔画吉凶
易语言 找不到指定的命令/子程序/Dll命令调用
南京哪里有夜市 就是路边摊的那种。谢谢!!
“塑”有哪些形近字?
北京奥运会结束后,人们进京旅游的热情迅速升
推荐资讯
女人生完孩子能做什么工作
怎么查去年车险保单
IOS 系统怎么下韩服啊,求指教
英雄落幕是什么意思
押韵霸气中考百日誓师大会口号四字成语六句
会计问题--判断
民事诉讼法属于什么法
电视剧《雪花神剑》改编自卧龙生的哪部小说?
桥背派出所办公位置在哪啊?好找么?
轻羽绒怎么洗
若一个正比例函数的图象与一个反比例函数图象
多选题对国民经济发展起主导作用的有:A.第三
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?