gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:23:03 25 4
gpt4 key购买 nike

在《英特尔64和IA-32体系结构手册》第3A卷第9章“处理器管理和初始化”中,我发现了以下内容:

Compatibility mode execution is selected on a code-segment basis. This mode allows legacy applications to coexist with 64-bit applications running in 64-bit mode. An operating system running in IA-32e mode can execute existing 16-bit and 32-bit applications by clearing their code-segment descriptor's CS.L bit to 0.



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

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

最佳答案

16位DOS应用程序无法在64位Windows上运行,因为在长模式下无法使用virtual-8086模式
但是16位保护模式仍然可用,因此从技术上讲,可以运行16位Windows 3.x应用程序。这就是Wine runs 16-bit Windows apps in 64-bit Linux。不幸的是,64位Windows没有相同的功能,尽管原因是而不是,因为64位模式无法运行16位指令,但是由于增加了重要部分。

The primary reason is that handles have 32 significant bits on 64-bit Windows. Therefore, handles cannot be truncated and passed to 16-bit applications without loss of data.

https://docs.microsoft.com/en-us/windows/win32/winprog64/running-32-bit-applications


因此,如果要在64位Windows上运行16位应用程序,则必须使用虚拟机
有关更多详细信息,请阅读 Peter Cordes' answer
另请参阅 Can a 64-bit computer (x86) run a 16-bit OS natively, without emulation?

关于x86 - 是否可以在支持Intel IA-32e模式的操作系统中运行16位代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com