本章讲述COFF格式、C语育生成的段、连接命令文件(CMD文件)和复杂的.const段。虽然这些东西不属于标准C,但却是程序正常运行不可缺少的,希望引起足够的重视。
通用目标文件格式COFF (Common Object File Format),是一种很流行的二进制可执行文件格式。二进制可执行文件包括库文件(以后缀.lib结尾)、目标文件(以后缀.obj结尾)、最终的可执行文件(以后缀out结尾)等。COFF格式最先由贝尔实验室在UNIX操作系统上。实现,PC机_上Windows95和NT4.0以后的操作系统的一进制文件格式(PE),就是在COFF格式基础上的近一步扩充。TI公司提供了两个版本的COFF格式:版本0和版本1。版本0是TI公司早先用的版本,现在的默认设置是版本。
在Windows操作系统5编程的程序员,学习PE格式通常不是必需任务,交由操作系统来处理完成即可;但在DSP上编程,由于接触到较低层的东西,则需要对COFF格式有个概念上的清晰。
详细的COFF文件格式包括有段头、可执行代码和初始化数据、可重定位信息、行号入口、符号表,字符串表等等,这些属于编写操作系统和编译器人员关心的范畴。从应用的层面上讲,DSP的C语言程序员应能掌握两点:通过伪指令定义段;并给段分配空间。至于二进制文件到底如何组织分配,则交由编译器完成。
把握COFF格式的概念,最关键的点就是:二进制可执行文件是以段(section) 的形式存储的。这里section 译为段,也有些人喜欢译为节。
使用段的好处是鼓励模块化编程,提供更强大而又灵活的方法来管理代码和目标系统的内存空间。这里模块化编程的意思是,程序员可以自由决定愿意把哪些代码归属到哪些段,然后加以不同的处理。比如,把已初始化数据归属到一个段,未初始化数据归属到-一个段,而不是混杂在一-起。
编译器处理段的过程为:每个源文件都编译成独立的目标文件(以后缀.obj结尾),每个目标文件含有自己的段:连接器把这些目标文件中相同段名的部分连接在一起,生成最终的可执行文件(以后缀out结尾)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !