ioi-xd Asked: 2020-01-24 14:16:00 +0800 CST2020-01-24 14:16:00 +0800 CST 2020-01-24 14:16:00 +0800 CST 64 位计算机 (x86) 可以在没有仿真的情况下本机运行 16 位操作系统吗? 772 如果您要构建一个具有完全现代部件的现代 x86 计算机,您是否可以在没有任何仿真甚至使用 FreeDOS 的情况下将 MS-DOS 6.11 和 Windows 3.11 加载到它上面?我最近看到一个视频,它是用 32 位操作系统 Windows 95 完成的,但它可以用像 Windows 3.1 甚至更低的 16 位操作系统完成吗? 64-bit x86 4 个回答 Voted Best Answer Ro-ee 2020-01-24T14:44:52+08:002020-01-24T14:44:52+08:00 是的。64 位 CPU(x86 类型)可以在 x86 实模式下运行,这就是 16 位应用程序运行的基础。你有它的所有限制(640KB 内存、16 位宽寄存器等),但你的处理器速度比 80 年代快数百甚至数千倍,当时这些 16 位操作系统风靡一时。 不过,硬件访问是有问题的。由于英特尔计划在 2020 年积极放弃对旧版 BIOS 甚至兼容性支持模块的支持,因此您的 16 位应用程序将无法依赖 BIOS 调用来进行磁盘访问、图形、键盘/鼠标输入等。必须为所有这些都编写 16 位驱动程序,这实际上是不可行的,因为大多数设备无法用 16 位寻址(设备 PCI 地址通常在 3GB 左右),而且没有办法告诉您的驱动程序“将此缓冲区数据写入地址 0xEF000000”(因为这将是驱动程序所期望的)。 另一方面,如果您仍然有传统的 BIOS(或至少启用了 UEFI CSM),您仍然可以运行旧的 16 位软件。但是,硬件支持将受到限制,因为所有这些都必须由 BIOS 提供,并且 BIOS 制造商可能会减少广泛的支持,仅支持有限数量的 USB 设备以及一定数量的 SATA(甚至 NVMe)设备. Sam Forbis 2020-01-24T14:44:51+08:002020-01-24T14:44:51+08:00 随着 CPU 和 PC 的发展,CPU 制造商一直致力于保持与以前的指令集和软件的向后兼容性。您仍然会在 Intel 8086(从 1970 年代后期)上引入的现代 x86-64 CPU 上找到一些说明。 您的问题的答案是肯定的,现代 x86-64 PC 在技术上可以运行 16 位操作系统。事实上,这里有一个热门 YouTuber LGR 的视频链接,显示他在他的新游戏 PC 上安装 MS-DOS 6.2。 做这样的事情有一些明显的限制。在 DOS 中,您将无法访问超过 640K 的 RAM。同样,如果您在 64 位硬件(或 32 位硬件)上运行 32 位操作系统,则您运行的程序将被限制为使用 4GB 的 RAM。 综上所述,64 位操作系统不能像 32 位软件那样本机运行 16 位软件。一个奇怪的怪癖,但这就是计算机芯片饼干崩溃的方式。 phuclv 2020-01-24T21:51:42+08:002020-01-24T21:51:42+08:00 是的。现代 x86-64 CPU 仍然完全向后兼容,甚至可以追溯到第一代 (8086) 完全向后兼容性在计算机指令集架构中尤为重要,其中最成功的架构之一是 x86 系列微处理器。它们的完全向后兼容性可追溯到 1978 年推出的 16 位 Intel 8086/8088 处理器。(反过来,8086/8088 的设计考虑到为其前身编写的程序易于机器翻译,尽管它们不是指令- 从 1974 年起与 8 位 Intel 8080 处理器兼容。 https://en.wikipedia.org/wiki/Backward_compatibility#Hardware 它甚至从DOS 运行的实模式启动。启动后,引导加载程序或内核将根据需要切换到 32 或 64 位模式 支持保护模式的 x86 处理器引导到实模式,以向后兼容旧的 8086 类处理器。上电(又名启动)后,处理器以实模式初始化,然后开始执行指令。可能存储在ROM中的操作系统引导代码可以将处理器置于保护模式以启用分页和其他功能。保护模式下的指令集类似于实模式下使用的指令集。 https://en.wikipedia.org/wiki/X86#Protected_mode 因此,绝对有可能在所有 x86 CPU 中安装所有 DOS 版本,并遭受所有 DOS 限制,例如寻址模式或地址线的数量。Windows 3.x 实际上只是一个运行在 DOS 之上的 GUI 应用程序(虽然在不同的 16 位模式下),所以你也可以在现代机器上运行它 然而,以前的模式和 64 位模式(AKA 长模式)的一个主要区别是,一旦 CPU 切换到长模式,它就不能转换回虚拟 8086 模式,所以你不能运行 16 位 DOS 64 位 Windows 中的应用程序。对于那些你必须在裸机上运行的人(所以在裸机上运行也可以) 请参阅是否可以在支持 Intel IA-32e 模式的操作系统中运行 16 位代码? 也就是说,尽管 CPU 支持完整的 16 位指令集,但由于缺乏现代硬件支持,启动系统可能很困难,正如其他人所说 Jasen 2020-01-26T01:48:11+08:002020-01-26T01:48:11+08:00 我最近看到了一个使用 Windows 95 完成的视频, Windows 95 是一个带有 32 位外壳的 16 位操作系统 (MS-DOS),所以您已经看到它完成了。
是的。64 位 CPU(x86 类型)可以在 x86 实模式下运行,这就是 16 位应用程序运行的基础。你有它的所有限制(640KB 内存、16 位宽寄存器等),但你的处理器速度比 80 年代快数百甚至数千倍,当时这些 16 位操作系统风靡一时。
不过,硬件访问是有问题的。由于英特尔计划在 2020 年积极放弃对旧版 BIOS 甚至兼容性支持模块的支持,因此您的 16 位应用程序将无法依赖 BIOS 调用来进行磁盘访问、图形、键盘/鼠标输入等。必须为所有这些都编写 16 位驱动程序,这实际上是不可行的,因为大多数设备无法用 16 位寻址(设备 PCI 地址通常在 3GB 左右),而且没有办法告诉您的驱动程序“将此缓冲区数据写入地址 0xEF000000”(因为这将是驱动程序所期望的)。
另一方面,如果您仍然有传统的 BIOS(或至少启用了 UEFI CSM),您仍然可以运行旧的 16 位软件。但是,硬件支持将受到限制,因为所有这些都必须由 BIOS 提供,并且 BIOS 制造商可能会减少广泛的支持,仅支持有限数量的 USB 设备以及一定数量的 SATA(甚至 NVMe)设备.
随着 CPU 和 PC 的发展,CPU 制造商一直致力于保持与以前的指令集和软件的向后兼容性。您仍然会在 Intel 8086(从 1970 年代后期)上引入的现代 x86-64 CPU 上找到一些说明。
您的问题的答案是肯定的,现代 x86-64 PC 在技术上可以运行 16 位操作系统。事实上,这里有一个热门 YouTuber LGR 的视频链接,显示他在他的新游戏 PC 上安装 MS-DOS 6.2。
做这样的事情有一些明显的限制。在 DOS 中,您将无法访问超过 640K 的 RAM。同样,如果您在 64 位硬件(或 32 位硬件)上运行 32 位操作系统,则您运行的程序将被限制为使用 4GB 的 RAM。
综上所述,64 位操作系统不能像 32 位软件那样本机运行 16 位软件。一个奇怪的怪癖,但这就是计算机芯片饼干崩溃的方式。
是的。现代 x86-64 CPU 仍然完全向后兼容,甚至可以追溯到第一代 (8086)
它甚至从DOS 运行的实模式启动。启动后,引导加载程序或内核将根据需要切换到 32 或 64 位模式
因此,绝对有可能在所有 x86 CPU 中安装所有 DOS 版本,并遭受所有 DOS 限制,例如寻址模式或地址线的数量。Windows 3.x 实际上只是一个运行在 DOS 之上的 GUI 应用程序(虽然在不同的 16 位模式下),所以你也可以在现代机器上运行它
然而,以前的模式和 64 位模式(AKA 长模式)的一个主要区别是,一旦 CPU 切换到长模式,它就不能转换回虚拟 8086 模式,所以你不能运行 16 位 DOS 64 位 Windows 中的应用程序。对于那些你必须在裸机上运行的人(所以在裸机上运行也可以)
请参阅是否可以在支持 Intel IA-32e 模式的操作系统中运行 16 位代码?
也就是说,尽管 CPU 支持完整的 16 位指令集,但由于缺乏现代硬件支持,启动系统可能很困难,正如其他人所说
Windows 95 是一个带有 32 位外壳的 16 位操作系统 (MS-DOS),所以您已经看到它完成了。