2009-03-15 19 views
9

私のアセンブリ言語クラスでは、DPMIを使用してDOSプログラムを作成しています。残念ながら、私はいつも32ビットのWindowsマシンにアクセスすることはできません。私は、私が使っているほぼすべてのコンピュータにDebian仮想マシンをインストールしています。DebianでDOSプログラムをコンパイルするには?

DOSBoxとDOSEMUの両方がインストールされています。 DOSではなくLinuxでプログラムをアセンブルしてコンパイルできる方法はありますか?私はnasmを使用しているので、DOS形式で組み立てるのに問題はないようです。しかし、私はCコードでコンパイラを実行し、gccまたはMinGWのいずれかを使用してDOS実行可能ファイルを取得することに問題があります。

これを行うにはいくつかの方法がありますか、DOSですべてのツールをインストールする必要がありますか?

+0

おそらく、あなたのDOS VMにツールチェーンを強制しなければならないでしょう。私は知っている、それは吸う。 +1し、私はこれに良い答えを見て願っています。 –

+0

DOSBoxでMASMを使用しようとしています... – 23ars

答えて

7

GCCを使ってDOSアプリケーションをコンパイルできるかどうかはわかりません。長い間DJGPP(またはそのようなもの)と呼ばれるgccコンパイラーバリアントがありました。私は決してそれを働かせなかった。

最近、GCC for DOSをクロスコンパイルできる可能性はほとんどゼロです。

古いWatcomコンパイラを試してみることをお勧めします。これはネイティブのDOSコンパイラで、DPMIの実装はDosBoxの下の魅力のようにも機能します。 NASMでコンパイルされたオブジェクトファイルとのインタフェースも問題ありません。(これは2、3年でした)

今日、コンパイラはオープンソース化されOpenWatcomと呼ばれています。

http://www.openwatcom.org/index.php/Main_Page

+0

DJGPPはWindowsでDOSプログラムをコンパイルするために使用していますが、DOS以外でもWindows外にインストールするには完全かつ完全なPITAです。 –

+1

私はそれをi586-pc-msdosdjgpp-gccとしてインストールし、 '--cross-prefix = i586-pc-msdosdjgpp-'を使ってクロスコンパイルします。 FFmpeg for DOSを(ちょうど楽しみのために)コンパイルしましたか? –

3

おそらくあなたのために行くための最も簡単な方法は、タスクのための標準的なDOSツールを使用することです。

DOSBOXは本当に良いエミュレータです。

7

BCCは、8080〜80386の適切なコードを生成することができます。-Mdスイッチを使用してMS-DOSバイナリを生成します。

2

DJGPPが最低限3つだけ.ZIPsが必要とされ、インストールする途方もなく簡単です:

  1. BNU219B.ZIP(アセンブラ、リンカ、ライブラリアン)
  2. GCC441B.ZIP(Cコンパイラ)
  3. DJDEV204.ZIP(libcのヘッダ)

http://www.delorie.com/djgpp/getting.html

unzip *.zip -d c:\djgpp && 
set DJGPP=c:\djgpp\djgpp.env && 
path c:\djgpp\bin;%PATH% 

gcc myfile.c -o myfile.exe 

DOS互換出力を生成するには、DOSホストでコンパイルされたDOSを使用するか(DOSBoxではない!! (ゲームのためだけに意味があります)、またはLinuxでホストされているクロスコンパイラを使用してください(DJのサイトにはRPMがあります)。

しかし、100%16ビットコードが必要な場合は、別のもの(OpenWatcomなど)を使用する必要があります。 OpenWatcomはLinux(ベータ!!)のホストとターゲット(IIRCでは共有ライブラリなし)もサポートしていますが、GCCを使ってコンパイルしなければならないかもしれません。

関連する問題