Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linker 什么是>;地区1 AT>;区域2在LD链接器脚本中是什么意思?_Linker - Fatal编程技术网

Linker 什么是>;地区1 AT>;区域2在LD链接器脚本中是什么意思?

Linker 什么是>;地区1 AT>;区域2在LD链接器脚本中是什么意思?,linker,Linker,我正在尝试理解第三方链接器脚本 在脚本的开头,它定义了两个名为iram和dram的内存(使用内存{…}) 然后定义了几个具有以下语法的部分: .data{ ... } > dram AT > iram 我知道末尾的>dram意味着将该部分(.data)定位在dram区域中。但是我不明白“AT>iram”是什么意思。示例中.data定义的dram部分指定.data部分的虚拟内存地址(VMA),而iram部分指定加载内存地址(LMA) VMA是程序运行时节的地址。LMA是程序加载时节的

我正在尝试理解第三方链接器脚本

在脚本的开头,它定义了两个名为iram和dram的内存(使用内存{…})

然后定义了几个具有以下语法的部分:

.data{
...
} > dram AT > iram

我知道末尾的>dram意味着将该部分(.data)定位在dram区域中。但是我不明白“AT>iram”是什么意思。

示例中.data定义的dram部分指定.data部分的虚拟内存地址(VMA),而iram部分指定加载内存地址(LMA)

VMA是程序运行时节的地址。LMA是程序加载时节的地址。例如,这可用于为非易失性存储器中的全局变量提供初始值,这些变量在程序加载期间复制到RAM中


更多信息也可以在GNU链接器ld的手册中找到:

使用此链接器脚本的启动代码将.data部分从ROM复制到RAM。所以,如果我理解正确,当你知道这将要发生时,你需要>ram AT>rom参数吗?很抱歉,我看不到这个链接。还有一件事,“地址是程序加载时的部分地址”中的句子你指的是LMA,对吗?是的,对不起,我的意图是写LMA(我编辑了上面的答案)。另一个stackoverflow问题也解释了一个类似的示例:。