请问lds文件中LMA和VMA的区别

内核编译和嵌入式产品的设计与开发
回复
头像
poplarc
帖子: 43
注册时间: 2007-01-20 22:20
来自: 深圳

请问lds文件中LMA和VMA的区别

#1

帖子 poplarc » 2008-04-21 14:11

在IBM的网站上看到下面解释,但是仍不理解,哪位大侠能帮忙详解一下?谢谢。

:shock:
可这样来理解VMA和LMA, 假设:
(1) .data section对应的VMA地址是0x08050000, 该section内包含了3个32位全局变量, i、j和k, 分别为1,2,3.
(2) .text section内包含由"printf( "j=%d ", j );"程序片段产生的代码.
连接时指定.data section的VMA为0x08050000, 产生的printf指令是将地址为0x08050004处的4字节内容作为一个整数打印出来.
如果.data section的LMA为0x08050000,显然结果是j=2
如果.data section的LMA为0x08050004,显然结果是j=1
回复