2009-03-15 12 views
9

Dla mojej klasy języka asemblerowego piszemy programy DOS używając DPMI. Niestety, przez cały czas nie mam dostępu do 32-bitowej maszyny Windows. Mam wirtualną maszynę Debiana zainstalowaną na prawie każdym komputerze, z którego korzystam.Jak skompilować programy DOS na Debianie?

Mam zainstalowane DOSBox i DOSEMU. Czy istnieje sposób, w jaki mogę zebrać i skompilować programy w Linuksie zamiast w DOS? Używam nasm, więc wydaje mi się, że nie mam żadnych problemów z jego skompletowaniem w formacie DOS. Mam jednak problem z uruchomieniem go za pomocą kompilatora z moim kodem C i uzyskaniem pliku wykonywalnego DOS (przy użyciu gcc lub MinGW).

Czy jest jakiś sposób, aby to zrobić, czy raczej będę musiał zainstalować wszystkie narzędzia w systemie DOS?

+0

Prawdopodobnie będziesz musiał wymusić łańcuch narzędzi w swoim urządzeniu wirtualnym DOS. Wiem, to jest do bani. +1 i ulubiony, mam nadzieję, że dostanę dobrą odpowiedź na to pytanie. –

+0

Spróbuj użyć MASM w DOSBox ... – 23ars

Odpowiedz

7

Nie jestem nawet pewien, czy można kompilować aplikacje DOS przy użyciu GCC. Dawno temu był wariant kompilatora gcc o nazwie DJGPP (lub coś w tym stylu). Nigdy jednak nie działałem.

Prawdopodobieństwo, że można skompilować GCC dla DOS w te dni, jest prawie zerowe.

Proponuję spróbować starego kompilatora Watcom. Jest to natywny kompilator DOS, a jego implementacja DPMI działa również jak urok w DosBox. Współpraca z plikami obiektów skompilowanymi NASM również nie stanowi problemu (robiłem to kilka lat).

Dzisiaj kompilator został utworzony jako open source i nazwany OpenWatcom.

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

+0

DJGPP jest tym, czego używamy do kompilowania programów DOS w Windows, ale jest to kompletna i całkowita PITA do instalacji poza Windows (nawet pod DOS). –

+1

Mam zainstalowany jako i586-pc-msdosdjgpp-gcc i cross-kompilacja z nim za pomocą '--cross-prefix = i586-pc-msdosdjgpp-' więcej działa niż nie. Właśnie skompilowałem (tylko dla zabawy) FFmpeg dla DOS. –

3

Prawdopodobnie najprostszym sposobem, aby przejść dla ciebie jest, aby używać standardowych narzędzi DOS dla zadania.

DOSBOX to naprawdę dobry emulator.

7

BCC jest w Debianie i jest zdolny do wytwarzania kodu przyzwoity 8080 aż do 80386. Za pomocą przełącznika -Md do wytworzenia binarny MS-DOS.

2

DJGPP śmiesznie łatwy do zainstalowania, minimum potrzebne są tylko trzy .ZIPs:

  1. BNU219B.ZIP (montujący łącznik bibliotekarz)
  2. GCC441B.ZIP (kompilator C)
  3. DJDEV204.ZIP (libc nagłówki)

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 

Aby uzyskać wyjście zgodne z DOS, będziesz musiał użyć kompilatora DOS-em w DOSEMU (nie DOSBox !! zbyt wolno i błędnie, przeznaczone tylko dla gier) lub użyj cross-kompilatora obsługiwanego przez Linuksa (na stronie DJ'a znajdują się RPMy).

Jeśli jednak potrzebujesz 100% kodu 16-bitowego, będziesz musiał użyć czegoś innego (np. OpenWatcom). OpenWatcom wspiera również Linuxa (beta !!) hosta i cel (nie ma wspólnych bibliotek, choćby IIRC), ale być może będziesz musiał skompilować go samemu z GCC.

Powiązane problemy