链接脚本之LMA VMA解释

链接脚本中的LMA和VMA是什么意思。这个问题纠结了一段时间,今天在看《ARM体系结构与编程》时,豁然开朗,写下自己的认识。分享例如以下:

LMA:载入地址 位于存储器中的地址  LOAD MEMORY ADDRESS

VMA:执行地址(虚拟地址) 执行时的地址 VIRTUAL MEMORY ADDRESS  为什么用VMA表示呐?由于cpu执行的地址都是虚拟地址,经过MMU转为物理地址。在没有开MMU的裸板下,延续了这一称呼。理解为执行地址。

为什么要分 两种地址?

执行映像文件时,有些域能够移动到新的存储区域。

链接脚本中

SECTIONS

{

.text 0x50000000 : AT(0x0)         ///0X5000000 是执行地址          //AT指定的是 载入地址

{

*(.text);

}

..........

}

时间: 2024-11-07 03:01:44

链接脚本之LMA VMA解释的相关文章

[转]Linux下的链接脚本基础

[转]http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 1. 前言 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默

GNU-ld链接脚本浅析

http://blogold.chinaunix.net/u/30686/showart_357384.html 本文乃转载, 我在其基础上做了少量修改. 原作者的E-mail是[email protected].ac.cn. 完成于2005.11.5-2005.11.8 0. Contents 1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达

Linux下的lds链接脚本详解【转】

转自:http://www.cnblogs.com/li-hao/p/4107964.html 转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事

ARM链接脚本

1. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的段放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 2. 基本概念 链接器把一个或多个输入文件合成一个输出文件. 输入文件:  目标文件或链接脚本文件.输出文件:  目标文件或可执行文件.目标文件(包括可执行文件)具有固定的格式, 在UNIX或GNU/Linux平台下, 一般为ELF格式. 若想了解

Linux下的lds链接脚本详解

1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗含的连接脚本 1. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 连接器有

【转】链接脚本(1)

1.什么是ld?它有什么作用? ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种.完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析.Linking其实主要就是完成四个方面的工作:storage allocation.symbol management.libraries.relocation. ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控制链接

链接脚本解析

1. 概述 链接器的作用主要是对符号的解析以及将符号与地址进行绑定.要实现这个功能需要依赖链接脚本,链接脚本大多数情况下用来链接输入文件,并生成目标文件.编译器的"-T"参数就是用来指定链接脚本的. 2. 链接脚本 需要解析的链接脚本代码如程序清单 2.1所示. 程序清单 2.1 链接脚本源码 OUTPUT_FORMAT("elf32-tradlittlemips") OUTPUT_ARCH(mips) ENTRY(_start) SECTIONS {   /* R

重定位与链接脚本

1.为什么需要重定位 位置无关编码(PIC,position independent code):汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关. 位置有关编码:汇编源码编码成二进制可执行程序后和内存地址是有关的. 我们在设计一个程序时,会给这个程序指定一个运行地址(链接地址).就是说我们在编译程序时其实心里是知道我们程序将来被运行时的地址(运行地址)的,而且必须给编译器链接器指定这个地址(链接地址)才行.最后得到的二进制程序理论上是和你指定的运行地址有关的,将来这个程序被执

链接脚本在编程中的高级运用之一:可变长数组

作为嵌入式软件工程师,应该要清楚程序的每一条指令在哪里,什么时候会被加载到内存,什么时候会被执行.链接脚本会明确告诉你程序的代码和数据在内存中的分布.精确控制代码和数据在内存中的分布是高效利用内存资源的前提.自定义链接脚本是资深嵌入式软件工程师的必备技能,更是嵌入式架构师的最基本要求.此外,灵活定制链接脚本在编程方面有更高级的应用. 一.编译链接原理 简单讲述编译链接的基本原理有助于后面内容的理解. a. 简单点说,一个可执行程序包括文件头.代码段(.text).数据段(.bss).符号段等信息