【发布时间】:2015-03-13 00:14:50
【问题描述】:
COFF、ELF、a.out等二进制格式有什么区别,为什么会有这么多不同的格式?
它们必须是一系列指令及其参数(由 ISA 指定)。所以只要处理器相同,就可以在电脑之间使用相同的二进制(目前需要兼容ABI)。
【问题讨论】:
-
在发布此问题之前您是否进行过任何研究?
-
@OliverCharlesworth 是的,但没有人解释这么多格式的必要性。
-
“它们为什么存在?” - 同样的原因有不止一种编程语言、不止一种操作系统或不止一种编译器。
-
请注意,第一个 MS-DOS 二进制文件(.com 文件)是只是由 ISA 指定的指令序列及其参数。您可能想研究下一种格式(.exe 文件,“MS-DOS MZ 格式”)提供的功能。
-
请向我解释如何使用原始机器代码块实现共享库、导入、导出。请详细说明操作系统如何知道将代码标记为可执行文件,并将某些数据区域标记为只读,并带有原始机器代码块。请定义 ABI,当您只有一团机器代码时。
标签: c linux operating-system