Kaw*_*iKx 2 x86 executable dos executable-format x86-16
据我所知,可执行文件的扩展名 .com .exe 等适用于操作系统。它与底层 ISA(无论是 x86 还是 SPARC)无关。我对么?.com 可执行文件只能在 Windows 操作系统上运行吗?.com 可执行文件是遗留文件吗?
.com、.exe 扩展名告诉 DOS 或 Windows 操作系统该文件是可执行文件。文件扩展名(.com、.exe)本身并不能告诉操作系统底层指令集是什么。对于具有 .exe 扩展名的 Windows 可执行文件,指令集在文件的前几个字节(PE 标头)中指定。
最初,DOS .com 文件仅包含一组指令,操作系统(即 DOS)将在固定地址加载这些指令并从第一条指令开始执行。这些类型的 .com 文件是“遗留”文件。如果没有模拟,它们就无法在现代操作系统上运行。这种类型的 .com 文件可以在 CP/M 和更高版本(更常见)的 DOS 上找到,但只能在它们最初设计的操作系统和指令体系结构上运行。您可以通过模拟在其他操作系统上运行它们。例如,dosbox 在Linux 上运行DOS .com 文件。更高版本的 DOS 和 Windows 会查看 .com 文件,看看它们是否真的是 LE/PE 可执行文件。如果是,则执行它们就像它们具有 .exe 扩展名一样。Visual Studio 附带了一些带有 .com 扩展名的文件。有关详细信息,请参阅https://devblogs.microsoft.com/oldnewthing/20080324-00/?p=23033 。