有没有办法将 16 位 DOS 应用程序转换为 32 位?

有没有办法将 16 位 DOS 应用程序转换为 32 位?

有没有办法将 16 位 DOS 应用程序转换为 32 位应用程序,这样我就不受 16383 限制的限制?或者有没有办法将 16 位应用程序作为 32 位应用程序运行而无需转换?

我没有该程序的源代码,因此无法以任何方式重建它。

谢谢

答案1

您无法转换它们。只有当您有源代码时,您才能将它们重新编译为 32 位。

答案2

什么样的服务经典游戏为了使真正古老的游戏(例如 16 位 dos)在现代系统上运行,需要将 dos 可执行文件和虚拟机打包在一起,以便游戏认为它在 DOS 中运行,而 VM 将 DOS 游戏执行的所有低级硬件交互转换为标准 Windows/Mac/Linux 操作系统命令。

您可以执行类似操作在现代硬件上运行旧版应用程序,让新操作系统认为它正在运行 32 位应用程序;但所有旧的 16 位系统限制仍将保留。

答案3

我假设 16383 的限制是指 16 位软件可以处理的变量的最大整数大小(我已经很久没有这样做了,所以我不得不查找一下)。如果不更改变量类型(在本例中是将短整数更改为长整数),就没有真正的方法可以做到这一点。

假设我们有一个神奇的软件,可以让我们运行具有 32 位或 64 位系统所有属性的 16 位软件 - 你可以访问更多的内存,但这是仍然16 位短整数变量。您还可以通过运行多个实例来加快速度。但是,不能简单地通过更改架构将短整数转换为长整数。

绝对没有办法解决这个问题,除非你对源代码进行破解(或者说几乎是破解)。我想,如果你是一个 1337 反汇编忍者,你也许可以运行一个反汇编程序,找出这个变量的位置并将其转换为长整数。然而,此时你最好弄清楚软件的逻辑是什么,然后重写它。

资料来源:C++ 头文件

相关内容