2009-03-15 23 views
9

Derleme dil sınıfım için, DPMI kullanarak DOS programları yazıyoruz. Ne yazık ki, her zaman 32-bit windows makinesine erişimim yok. Kullandığım her bilgisayarda bir Debian sanal makinem var.Debian programında DOS programlarını nasıl derlerim?

Hem DOSBox hem de DOSEMU yüklü var. Linux yerine DOS programlarını kurup derlemenin bir yolu var mı? Nasm kullanıyorum, bu yüzden DOS formatta toplanmasında sorun yaşamadım. Ancak, C kodumla ve bir DOS yürütülebilir dosyasını (gcc veya MinGW kullanarak) alarak derleyici aracılığıyla çalıştırırken sorun yaşıyorum.

Bunu yapmanın bir yolu var mı, yoksa tüm araçları DOS altında yüklemek zorunda mıyım?

+0

Muhtemelen bir araç zinciri int DOS vm zorlamak zorunda kalacaksınız. Biliyorum, bu berbat. +1 ve favoriler, bunun için iyi bir cevap görmeyi umuyorum. –

+0

DOSBox'ta MASM kullanmayı deneyin ... – 23ars

cevap

7

GCC kullanarak DOS uygulamalarını derleyip derleyemeyeceğinizden bile emin değilim. Uzun zaman önce DJGPP (ya da bunun gibi bir şey) olarak adlandırılan bir gcc derleyici varyantı vardı. Asla işe yaramadı.

Bu günlerde DOS için bir GCC'yi çapraz derleme şansınız neredeyse sıfır.

Eski Watcom Derleyiciyi denemenizi öneririz. Bu bir yerli DOS derleyicisi ve bu DPMI uygulaması da DosBox'un altında bir çekicilik gibi çalışır. NASM derlenmiş nesne dosyaları ile arabirim oluşturmak da sorun değil (birkaç yıl yaptım)

Bugün derleyici açık kaynak kodlu ve OpenWatcom olarak adlandırıldı. sizin için gitmek

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

+0

DJGPP, Windows'ta DOS programlarını derlemek için kullanıyoruz, ancak Windows dışında (DOS altında bile) yüklemek için eksiksiz ve toplam bir PITA. –

+1

Bunu i586-pc-msdosdjgpp-gcc olarak yükledim ve '-cross-prefix = i586-pc-msdosdjgpp-' ile daha fazla çalışma yapıp daha sonra çalışıyorum. Sadece derlenmiş (sadece eğlence için) DOS için FFmpeg var. –

3

Muhtemelen en kolay yolu görev için standart DOS araçları kullanmaktır.

DOSBOX gerçekten iyi bir emülatördür.

7

BCC, Debian'da ve 8080 için 80386'ya kadar iyi kod üretme kapasitesine sahiptir. Bir MS-DOS ikili oluşturmak için -Md anahtarını kullanın.

2

DJGPP gerekmektedir gülünç kolaydır, minimum üç .zip dosyaları gereklidir:

  1. BNU219B.ZIP (assembler, bağlayıcı, kütüphane)
  2. GCC441B.ZIP (Cı derleyici)
  3. DJDEV204.ZIP (libc'si başlıkları)

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 uyumlu çıktı üretmek için, DOSEMU'da DOS-barındırılan derleyiciyi kullanmanız gerekir (DOSBox'ta değil !! çok yavaş ve buggy, sadece oyunlar içindir) veya Linux tarafından barındırılan bir çapraz derleyiciyi kullanır (DJ'in sitesi bunun için RPM'lere sahiptir). Ancak,% 100 16 bit kod istiyorsanız, başka bir şey kullanmanız gerekecektir (ör. OpenWatcom). OpenWatcom ayrıca Linux (beta !!) ana bilgisayarını ve hedefini de desteklemektedir (paylaşımlı lib'lar olsa da, IIRC), fakat bunu GCC ile kendiniz derlemeniz gerekebilir.

İlgili konular