ELF,COFF是机器语言格式,对应于不同的芯片平台(ARM,x86),他们的汇编语言所使用的格式和寄存器等都不同
而PE文件结构是在COFF指令结构的基础上进行了包装,加入了一些DOS文件头,导入表,导出表,资源表等,然后PE载入器根据一定的流程载入执行该PE文件
比如,同是x86芯片上的linux和windows,windows的PE文件是无法在linux下执行的,因为linux载入器按照自己的规范根本找不到入口点等,虽然都是x86平台上的COFF或类似的代码格式.....
PE是windows下的可执行文件,elf是Linux下的.
至于COFF,英文全称Common Object File Format,通用对象文件格式,可看成是这些Unix-Like系统下可执行文件的老祖.你知道Object类吧,Java和Python,普通类和Object类的关系就和这差不多.