而pe文件结构是在coff指令结构的基础上进行了包装,加入了一些dos文件头,导搭敏入表,导出表,资源表等,然后pe载入行枝指器根据一定的流程载入执行该pe文件
比如,同是x86芯片上的linux和windows,windows的pe文件是无法在linux下执行的,因为linux载入器按照自己的规范根本找不到入口点等,虽然都是x86平台上的coff或类档配似的代码格式.....
不相同。ELF格式和COFF格式都是可执行文件和链接库的标准格式。两者在结构和布局上有所不同,也使用了不同的头文件格式。此外,ELF也支持更多的 *** 作系统和计算机体系结构,并且雀判在Linux、Unix等系统中郑带被广喊岁芦泛使用。TI的编译器,连接器等散毁厅工具产生的目标文件格式为Common Object File Format(简称COFF)。COFF格式是AT&T开发的,在UNIX系统中所采用的目标文件格式。TI的编译器产生的obj文件以及连接之后产生的out文件都是COFF格式的。用CCS载入out文件到DSP的内存的时候,CCS会分析这个out文件,将其中储存的代码段和初始数据等段中的数据复制到DSP的内存中,并且设置程序指针到Entry Point(入口地址)。Hex5x, Hex6x等转换工具通过分析out文件,将其输出为一个boot table,方便各种自举(自启动)程序的编写。例如我们经常把这样的boot table写入flash, 制作成能从flash自举余谈的应用程序。COFF最开始是文件头和附加文件头,附加文件头中保存有Entry Point的地址。其冲隐后就是Section Header表,其中有各个section的物理地址、长度以及初始化数据的在文件中的偏移地址等信息。所有的section header结束之后就是数据区了。也就是需要复制到DSP 内存中去的数据。其后还有连接用的relocation信息,如果out文件的话不需要这些信息,relocation之后是符号表,例如C语言的全局变量,函数等符号都在这个表中储存。最后是字符串表,section的名称或者符号名称太长的时候就把这些名称字符串储存到字符串表中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)