32 位 x86 是 16 位 x86 的超集。假设我用 16 位 x86 编写代码。理想情况下,它应该可以在具有 32 位 x86 的系统上顺利运行。但事实并非如此。兼容性是这里的一个问题。但究竟为什么呢?是不是因为安装在 32 位 x86 机器上的 32 位操作系统在内存中加载程序的方式不同并且对内存的管理方式不同?不同的内存管理要求是 16 位和 32 位应用程序之间的真正区别吗?
问问题
2022 次
3 回答
3
在 Windows 中:
在 32 位操作系统中运行 16 位程序的主要问题是大多数 16 位程序用于在实模式下运行,不再支持(操作系统)。这些模式根本不同,因此需要软件仿真。此外,由于所有 16 位 API 存根、DOS 函数和 BIOS 调用都不可用,程序将无法真正与操作系统交互,因此如果没有某种仿真,它们就无法使用。对于 Windows,NTVDM 从 Windows NT3.1 开始进行所有模拟。
当然,如果您的程序不需要与操作系统进行任何交互,您应该能够运行它。就操作码和指令集而言,32 位 x86确实是 16 位 x86的超集。只是代码通常运行的环境完全不同。
于 2011-05-23T16:22:34.303 回答
1
于 2013-02-03T10:49:45.287 回答
0
在超级用户这里有一个相关的(64 位操作系统上的 16 位)讨论。
于 2011-05-23T16:24:57.200 回答