请教关于STM32汇编与链接

[复制链接]
2654|2
手机看帖
扫描二维码
随时随地手机跟帖
zxdplay|  楼主 | 2012-5-20 16:08 | 显示全部楼层 |阅读模式
本帖最后由 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是否就是对应的两个输出节?





airwill| | 2012-5-21 12:10 | 显示全部楼层
汇编真的是很少玩. 也从来没有关注过连接器的细节. 估计这里也没有几个人仔细玩过.
恐怕遍编译器手册最能够帮上你的忙了, 只有多看几遍编译器手册
希望哪天全弄清楚了, 写篇笔记, 我们大家来学习学习.

使用特权

评论回复
zxdplay|  楼主 | 2012-5-21 19:46 | 显示全部楼层
昨天执行研究了一下手册,似乎搞懂了不少问题
所谓的输出节就相当于按照属性对输入节的分组
比如RO,WR,ZI三个分组
其实重点还是区和输入节
LR_1 0x040000     
{
    ER_RO +0      
    {
        * (+RO)   
    }
    ER_RW +0                  
    {
        * (+RW)   
    }
}
上面可以理解为将RO和RW两个输出节的执行区分别为ER_RO和ER_RW
不知道我这样理解对不对?
感谢2楼回复

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

199

主题

226

帖子

1

粉丝