web-dev-qa-db-ja.com

16ビットDOSアプリを32ビットに変換する方法はありますか?

16383の制限に制約されないように16ビットDOSアプリを32ビットアプリに変換する方法はありますか?または、16ビットアプリを変換せずに32ビットアプリとして実行する方法はありますか?

プログラムのソースコードがないので、再構築できません。

ありがとう

2
Daniel Wardin

それらを変換することはできません。ソースがある場合にのみ、32ビットとして再コンパイルできます。

7
magicandre1981

古き良きゲーム のようなサービスが最新のシステムで本当に古いゲーム(例:16ビットdos)を動作させるために行うことは、dos実行可能ファイルと仮想マシンを一緒にパッケージ化して、ゲームが実行されていると見なすようにすることです。 DOS while VMは、DOSゲームが行うすべての低レベルのハードウェアインタラクションを標準のWindows/Mac/Linuxオペレーティングシステムコマンドに変換します。

最新のハードウェアでレガシーアプリケーションを実行するのと同様のことができ、新しいOSに32ビットアプリケーションを実行していると思わせることができます。ただし、古い16ビットシステムの制限はすべて残ります。

16383の制限では、16ビットソフトウェアが処理できる変数の最大整数サイズを意味すると想定しています(これを実行してから非常に長いため、調べなければなりませんでした)。変数の型(この場合は短整数から長整数)を変更せずにこれを行う実際の方法はありません。

32ビットまたは64ビットシステムのすべての属性を備えた16ビットソフトウェアを実行できる魔法のソフトウェアがあると仮定しましょう-より多くのメモリにアクセスできますが、これはまだです16ビットの短整数変数。複数のインスタンスを実行することで、処理を高速化することもできます。ただし、アーキテクチャを変更することによって、単純に短整数を長整数に変換することはありません。

これを修正するためにソースコードを(ほぼ)ハッキングせずに、絶対に方法はありません。もしあなたが1337の分解忍者だったら、逆アセンブラーを実行して、この変数がどこにあるかを調べて、それを長整数に変換できるかもしれません。ただし、この時点で、ソフトウェアのロジックを理解し、それを書き直す方がよいでしょう。

ソース: C++ヘッダードキュメント

2
Journeyman Geek