链接脚本中的LMA和VMA是什么意思,这个问题纠结了一段时间,今天在看《ARM体系结构与编程》时,豁然开朗,写下自己的认识,分享如下:
LMA:加载地址 位于存储器中的地址 LOAD MEMORY ADDRESS
VMA:运行地址(虚拟地址) 运行时的地址 VIRTUAL MEMORY ADDRESS 为什么用VMA表示呐?因为cpu运行的地址都是虚拟地址,经过MMU转为物理地址。在没有开MMU的裸板下,延续了这一称呼。理解为运行地址。
为什么要分 两种地址?
运行映像文件时,有些域可以移动到新...
分类:
其他好文 时间:
2014-06-30 06:13:11
阅读次数:
204
1.程序的构建
在构建程序的时候,链接器都会给程序设置一个默认的加载地址,即首选基地址,它表示该模块被映射到进程地址空间时最佳的内存地址。默认情况下,对于EXE程序而言,windows链接器会将它的首选基地址设置为0X400000(四十万),而DLL程序的首选基地址则被设置为0X10000000(1千万),然后链接器将该地址以及一些相关数据和代码的地址写入到PE文件中。首选基地址的是为了系统程序...
分类:
其他好文 时间:
2014-05-10 04:39:44
阅读次数:
821