【问题标题】:Lenght of neighboring regions in MEMORY command (linker)MEMORY 命令(链接器)中相邻区域的长度
【发布时间】:2020-05-18 15:49:04
【问题描述】:

我想在链接描述文件中一个接一个地声明几个区域。是否需要将长度减一以避免重叠?

MEMORY
{
region_1 :     org = 0x100,   len = 0x100 /* or len = 0xFF ? */
region_2 :     org = 0x200,   len = 0x100 /* or len = 0xFF ? */
region_3 :     org = 0x300,   len = 0x100 /* or len = 0xFF ? */
[...]
}

【问题讨论】:

  • 假设您从 0x100 开始计数,长度为 0x10(十进制 16)。即 0x100 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f(共16个值)。下一个数字将从 0x110 开始。同样适用于 0x100 的长度。不,它们不重叠。
  • 如何定义大小为 1 的区域?

标签: linker linker-scripts


【解决方案1】:

是否需要将长度减一以避免重叠?

没有。你的做法是正确的。

来自 GNU 链接器手册 Memory Layout 部分:

len 是区域的字节大小

例子:

MEMORY
{
region_1 : org = 0x10000000,   len = 1     /* 1 byte */
region_2 : org = 0x20000000,   len = 256K  /* 256 kilobytes */
region_3 : org = 0x30000000,   len = 4M    /* 4 megabytes ? */
[...]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多