是否可以在支持Intel IA-32e模式的操作系统中运行16位代码?

时间:2014-02-15 13:42:26

标签: x86 x86-64

在英特尔64& IA-32 architecutures手册第3A卷,第9章处理器管理和初始化,我发现了以下内容:

  

在代码段的基础上选择兼容模式执行。此模式允许旧版应用程序与以64位模式运行的64位应用程序共存。在IA-32e模式下运行的操作系统可以通过将其代码段描述符的CS.L位清除为0来执行现有的16位和32位应用程序。

这是否意味着传统的16位& 32位应用程序可以与在IA-32e模式下运行的操作系统上的64位应用程序共存。

但据我所知,64位操作系统通常不支持传统的16位代码。如果支持,我该如何启动16位应用程序?

2 个答案:

答案 0 :(得分:7)

Windows 64位不支持16位应用程序的原因不是因为64位模式无法运行16位指令。

  

主要原因是句柄在64位Windows上有32位有效位。因此,句柄不能被截断并传递给16位应用程序而不会丢失数据。

http://msdn.microsoft.com/en-us/library/aa384249%28VS.85%29.aspx

答案 1 :(得分:1)

<64> 64位架构支持32位应用程序,因此它们可以共存,对于16位应用程序,您需要一些工具来模拟寻址空间,例如Windows上的dosbox