va rva rawaddress

news/2024/12/3 4:58:10/
VA,虚拟地址,也就是程序被加载到内存中的地址
RVA,以虚拟地址前边加上个“相对的”,也就是说它还是按虚拟地址来换算,只不过不是从0开始,而是把一个模块的基址作为参考点。
RAW ADRRESS,或者FILE OSSFET,一般称文件偏移,你把一个文件看成一个连续的字节流,OFFSET就是这个字节流中的位置。
//文件偏移又称物理偏移,就是保存在磁盘里的文件。

换算关系为:
将VA减去MODULE的BASE就是RVA的值。

RVA与OFFSET的关系,是通过每个SECTION内领衔量相等为换算的。举例来说,假设一个EXE文件,BASE为0x00400000,第一个SECTION的名字叫.text,它的RVA是0x2000,那么它的VA就是0x00402000,也就是它个SECTION在内存中的起始地址是0x00402000;若假设这个SECTION的OFFSET是0x1000,那么最终的结果是,文件中从0x1000开始的一个SECTION,被映射到了内存地址0x00402000开始的内存区间。假设有一段代码位于这个SECTION中,它的地址(VA)是0x00402345,相当于它的RVA是0x2345,而它在SECTION内部的偏移量是0x0345,所以它的文件中的偏移量就是0x1000(SECTION的起始偏移量) + 0x0345,即0x1345。

总结:VA与RVA只相差一个BASE值,而VA与OFFSET的换算,关键是要确定这个地址属于哪一个SECTION。

什么是偏移量?
汇编语言中的定义为:
把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。 亦: 存储单元的实际地址与其所在段的段地址之间的距离。本质其实就是“实际地址与其所在段的段地址之间的距离”
更通俗一点讲,内存中存储数据的方式是:一个存储数据的“实际地址”=段首地址+偏移量,
你也可以这样理解:就像我们现实中的“家庭地址”=“小区地址”+“门牌号”
上面的“偏移量”就好比“门牌号”

其实就相当于C++的指针一样啦,指出确切的地址而已……

http://www.ppmy.cn/news/165124.html

相关文章

va_start 与 va_end用法

1. 包含头文件: #include <stdarg.h> 2.使用方法 参考:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html #include <stdio.h> #include <stdarg.h> #include <string.h> //WIN7 64BIT #define PLAT_ADDRESS_SIZE 8 /*ANSI标准形…

va_start(),va_arg(),va_end()

(一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的 C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va在这里是variable…

VapSR

1024刚过还得搬砖 注意机制在设计高级超分辨率&#xff08;SR&#xff09;网络中起着关键作用。在这项工作中&#xff0c;作者们通过改进注意机制设计了一个高效的SR网络。VapSR以更少的参数优于当前的轻量级网络。董超团队开源超大感受野注意力超分方案 paper&#xff1a;ht…

AArch64中va_list/va_start/va_arg/...的实现

版权声明&#xff1a;本文为笔者本人「ashimida」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/lidan113lidan/article/details/123962416 更多内容可关注微信公众号 一、背景[…

如何使用# ## ... _ _VA_ARGS_ _

1.#假如希望在字符串中包含宏参数&#xff0c;ANSI C允许这样作&#xff0c;在类函数宏的替换部分&#xff0c;#符号用作一个预处理运算符&#xff0c;它可以把语言符号转化程字符串。例如&#xff0c;如果x是一个宏参量&#xff0c;那么#x可以把参数名转化成相应的字符串。该过…

vala

根据百度百科的解释&#xff0c;vala是一种新的、为GNOME开发者提供的具有现代化编程语言功能的一种编程语言。 1. 安装 在ubuntu下安装很简单&#xff0c;使用命令sudo apt-get install valac-0.16&#xff08;12.04版本&#xff09;&#xff0c;测试valac编译器的版本号&…

VAE与CVAE

CVAE理论到代码 1. VAE的本质1.1 深度理解VAE1.2 VAE 与GAN 2. CVAE2.1 CVAE简介2.2 CVAE基本模型2.3 数学理解 参考 1. VAE的本质 1.1 深度理解VAE VAE本质就是在我们常规的自编码器的基础上&#xff0c;对encoder的结果&#xff08;在VAE中对应着计算均值的网络&#xff09;…

VQA

https://zhuanlan.zhihu.com/p/29688475 2017 VQA Challenge 第一名技术报告 张俊 2 天前 作者丨罗若天 学校丨TTIC博士生 研究方向丨NLP&#xff0c;CV 1. 前言 之前听 Chris Manning 讲过一个 talk&#xff0c;说他们复现别人的 paper&#xff0c;按照别人的算法写&#xff0…