本帖最后由 zxdplay 于 2012-5-21 19:40 编辑
最近研究STM32的汇编语言与链接器的使用,有几个概念始终不是很清楚
关于关于ELF节,映像,区,输出节,输入节,手册上这么描述的
--------------------------------------------------------------------------
1.1.2 ARM 链接器的输出
成功调用 armlink 后的输出为下列项之一:
• ELF 可执行格式的可执行映像
• ELF 共享对象格式的共享对象
• ELF 对象格式的部分链接对象
• ELF 对象格式的可重定位对象
对于简单映像, ELF 可执行文件包含相当于映像中的 RO 和 RW 输出节的段。
ELF 可执行文件还具有包含映像输出节的 ELF 节。
。。。。。。
3.1 指定映像结构
映像的结构由以下各项定义:
• 映像的组成区和输出节的数量
• 加载映像时这些区和节在内存中的位置
• 执行映像时这些区和节在内存中的位置
描述内存映射时:
• 术语 根区域用于描述加载地址和执行地址相同的区。
• 载入区相当于 ELF 段。
3.1.1 对象和映像的构建块
可执行文件由映像、区、输出节和输入节的层次结构构成:
• 映像由一个或多个区组成。 每个区由一个或多个输出节组成。
• 每个输出节包含一个或多个输入节。
• 输入节是对象文件中的代码和数据信息。
。。。。。。。
--------------------------------------------------------------------------
我想请教的问题是。
这里输入节是不是就是汇编语言中由AREA指令划分的段落?
比如: AREA |.text|, CODE, READONLY 就是一个只读代码输入节的开始
手册上写
"• 载入区相当于 ELF 段。"
”• 映像由一个或多个区组成。 每个区由一个或多个输出节组成。“
”ELF 可执行文件还具有包含映像输出节的 ELF 节“
由输出节组成的区,与载入区,ELF段,ELF节定义是否相同?
LR_1 0x040000
{
ER_RO +0
{
* (+RO)
}
ER_RW +0
{
* (+RW)
}
}
上面分散加载脚本中,ER_RO和ER_RW是否就是对应的两个输出节?
|