我的理解(来自维基百科)是x64指令集支持从长模式执行16位保护模式代码,但由于长模式缺少虚拟8086模式,因此无法在不退出长模式的情况下执行实模式代码.因此,真正的模式DOS应用程序无法在没有软件仿真或动态转换的Win64中运行.但是,为什么对Win16保护模式应用程序的支持被排除在支持它们(至少乍一看)似乎可以合理实现并且包含在较新版本的Win32中?这只是需求不足以证明实施成本合理的问题(并且win32版本已经实施),还是有一个很好的技术原因?
我认为没有任何实际的Win16保护模式应用程序.据我所知,Windows / 286及更高版本在保护模式下运行(由Microsoft称为“标准模式”或“增强模式”),但这些应用程序在技术上是实模式应用程序.
原文链接:https://www.f2er.com/windows/370021.html我记得曾经读过微软的一个惊喜,Windows团队想出了如何在受保护模式的操作系统下运行实模式代码.但是,在长模式下运行实模式代码的类似解决方案可能不存在.
所以问题实际上归结为a)为什么不切换到保护模式(或实模式)来运行Win16应用程序和b)为什么不包括模拟器(就像在其他非x86 NT平台上).
对于a)的答案显而易见,我认为,因为在长模式和其他模式之间切换并不是cpu支持而无需重启. OS / 2 1.x在保护模式和实模式下遇到了同样的问题,并且只提供了一个非常不优雅的解决方案.
b)的答案更难,但我认为这取决于微软根据这三点(我喜欢的名单)做出的决定:
>很少有人仍然运行16位应用程序.
>那些可以运行32位Windows来运行它们的人.
>第三方产品可以覆盖剩余的市场.
事实上,在64位Windows下运行32位Windows(以及16位应用程序)有几种解决方案,包括微软自己的Virtual PC.
总而言之,这只是决定停止支持(微软认为)传统平台的兼容性,有点像在Windows XP中删除16位OS / 2兼容性. (那些是16位保护模式的应用程序.)