加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

16位程序集与64位Windows 7不兼容

发布时间:2020-12-14 02:05:18 所属栏目:Windows 来源:网络整理
导读:我最近发现64位窗口不会运行16位应用程序(在这种情况下为.com),因为64位窗口没有16位子系统(或者互联网上说的那样).当我尝试执行一个调用EDIT的.bat文件时,我遇到了这个问题. 我对x86程序集有很多经验,但从未编写程序在windows(或任何其他操作系统)下运行.由
我最近发现64位窗口不会运行16位应用程序(在这种情况下为.com),因为64位窗口没有16位子系统(或者互联网上说的那样).当我尝试执行一个调用EDIT的.bat文件时,我遇到了这个问题.

我对x86程序集有很多经验,但从未编写程序在windows(或任何其他操作系统)下运行.由于x86系列的向后兼容性,我从来没有真正关注我的程序有多少.只要它没有使用程序必须运行的CPU中没有引入的指令,就可以了.

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

有可能拆卸小型16位应用程序并改变一点以使其正常工作,还是真的不明智?

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

解决方法

要运行“16位应用程序”(在本例中为DOS应用程序),Windows?需要在VM86模式下设置任务.问题是,当CPU处于32位VPAM(虚拟保护地址模式)时,这是有效的,这是i386操作系统使用的,但不是当CPU处于AMD引入的所谓“长模式”时. amd64 CPU“长模式”仅支持运行32位和64位任务.

因此,64位操作系统内核无法直接在CPU上运行16位任务,您必须始终使用某种仿真.如果您发现可以执行此操作系统的操作系统,它可以内置该仿真,或者以32位模式而不是64位模式运行,或者在32位和64位模式下运行并在两者之间快速切换他们在某种邪恶,扭曲的黑客,我读过某个地方.

根据经验,使用DOSBOX是您最好的选择.

编辑:Windows?如何检测到它无法运行您的代码?

这很大程度上取决于检测到的程序类型.它知道要处理的批处理文件(BAT,CMD),PIF文件(我认为它们仍然没有杀掉它们),最后是COM和EXE可执行文件. COM案例很简单:65280字节 – 最大. 16位MS-DOS?程序.另一方面,EXE文件具有某些文件头:一个用于16位DOS(或Win3.x)部分(关键字:MZ),一个用于32位/ 64位部分(LE,LX,PE) (至少),a.out和COFF在这里是关键字,其中一些用于OS / 2兼容性或仅由它使用,一些用于各种NT变体).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读