gpt4 book ai didi

embedded - 链接描述文件 : mixing memory regions and location assignments

转载 作者:行者123 更新时间:2023-12-05 03:33:04 25 4
gpt4 key购买 nike

我一直在研究一些用于嵌入式 ARM 处理器的链接描述文件。其中之一是这样的(最小示例):

MEMORY {
REGION : ORIGIN = 0x1000, LENGTH = 0x1000
}
SECTIONS {
.text : {
/* ... */
. = 0x20;
/* ... */
} > MEMORY
}

此链接描述文件规定 .text 部分应位于内存区域 REGION 中,该区域从 0x1000 开始。但是,在部分内容中,该位置明确设置为 0x20

这个位置分配是相对于该部分所在区域的起点吗?还是绝对?一般来说,区域和位置分配如何协同工作?

最佳答案

我做了一个测试。我创建了一个包含以下内容的程序集文件:

.text
.word 0x1234

然后我写了一个基本的链接描述文件,详见问题:

MEMORY {
REGION : ORIGIN = 0x100, LENGTH = 0x100
}
SECTIONS {
.text : {
. = 0x20;
*(.text);
} > REGION
}

我用 GCC 将汇编文件编译成目标文件,然后用 ld 将目标文件链接到“可执行文件”。在结果上运行 objdump -s,我发现 0x1234 位于地址 0x120。这意味着位置分配是相对于内存区域的开始

关于embedded - 链接描述文件 : mixing memory regions and location assignments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70383489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com