首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >16位程序集与64位windows 7不兼容

16位程序集与64位windows 7不兼容
EN

Stack Overflow用户
提问于 2013-09-27 16:47:53
回答 6查看 5.7K关注 0票数 4

我最近发现64位窗口不会运行16位应用程序(在本例中是.com),因为64位窗口没有16位子系统(或者互联网这么说)。我在尝试执行一个调用编辑的.bat文件时遇到了这种情况。

我对x86程序集有相当丰富的经验,但从未编写过在windows下运行的程序(或任何其他操作系统)。由于x86家族的向后兼容性,我从来没有真正关注过我的程序有多大。只要它不使用没有介绍给程序运行的CPU的指令,就没问题。

我的问题是:究竟是什么使代码16、32或64位,是什么触发了16位应用程序显然存在的不兼容问题?

是否有可能拆卸小型16位应用程序并进行一些修改以使其正常工作,或者这真的是不明智的吗?

更新:我并不是在寻找一种方法来运行这些类型的应用程序,即通过模拟器或其他程序来运行,这样我就可以自己工作了。我只想了解使windows接受或拒绝程序的基本机制。

EN

Stack Overflow用户

发布于 2013-10-15 02:32:29

其实有不止一个问题。首先,处理器对每个"bitness“都有不同的操作模式。但是,每种类型的应用程序都需要一个超出bitness的执行环境。它被称为应用程序二进制接口 (ABI)。例如,.com文件包含需要真正模式DOS环境的代码,包括某些硬件。早期版本的windows需要启动类似于DosBox的东西才能运行它们。每种类型的可执行文件都可能不需要完整的硬件仿真,而是需要大量的代码与主操作系统进行交互。因此,对于每种类型的可执行文件,操作系统都会检查需要什么样的运行时环境,并且拒绝运行可执行文件,除非它能够提供正确的环境。

票数 2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19056069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档