2009-03-15 7 views
9

제 어셈블리 언어 클래스의 경우 DPMI를 사용하여 DOS 프로그램을 작성합니다. 불행히도 저는 항상 32 비트 Windows 머신에 액세스 할 수 없습니다. 내가 사용하는 거의 모든 컴퓨터에 데비안 가상 머신을 설치했습니다.데비안에서 DOS 프로그램을 컴파일하려면 어떻게해야합니까?

DOSBox와 DOSEMU가 모두 설치되어 있습니다. DOS가 아닌 Linux에서 프로그램을 어셈블하고 컴파일 할 수있는 방법이 있습니까? 나는 nasm을 사용하고 있으므로 DOS 형식으로 어셈블하는 데 문제가없는 것 같습니다. 그러나 컴파일러를 통해 C 코드를 실행하고 DOS 실행 파일을 얻는 데 문제가 있습니다 (gcc 또는 MinGW 사용).

이 작업을 수행 할 수있는 방법이 있습니까 아니면 DOS에서 모든 도구를 설치해야합니까?

+0

당신은 아마 당신의 DOS VM에 툴 체인 int를 강제해야 할 것입니다. 알아, 그거 끔찍해. +1하고 즐겨 찾기, 나는 이것에 좋은 대답을 볼 수 있기를 바랍니다. –

+0

DOSBox에서 MASM을 사용해보십시오 ... – 23ars

답변

7

GCC를 사용하여 DOS 응용 프로그램을 컴파일 할 수 있는지 확실하지 않습니다. 오래전에는 DJGPP (또는 이와 비슷한 것)라는 gcc 컴파일러 변형이있었습니다. 나는 결코 그것을 작동시키지 않았다.

요즘 DOS 용 GCC를 크로스 컴파일 할 수있는 가능성은 거의 제로입니다.

이전 Watcom 컴파일러를 사용해 보시기 바랍니다. 그것은 네이티브 DOS 컴파일러이고 DPMI 구현은 DosBox의 매력처럼 작동합니다. NASM 컴파일 된 오브젝트 파일과의 인터페이스는 문제가되지 않습니다. (나는 2 년을했습니다.)

오늘 컴파일러는 오픈 소스로 만들어졌으며 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

은 데비안에 있으며 8080에서 80386까지 괜찮은 코드를 생성 할 수 있습니다. -Md 스위치를 사용하여 MS-DOS 바이너리를 생성하십시오.

2

DJGPP이 설치 안되게 쉽고, 최소한이 세 개의 .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 호환 출력을 생성하려면 DOSBox가 아닌 DOSEMU에서 DOS 호스트 컴파일러를 사용해야합니다! 너무 느리거나 버그가있어서 게임 전용) 또는 Linux 호스트 교차 컴파일러 (DJ의 사이트에 RPM이 있음)를 사용하십시오.

그러나 100 % 16 비트 코드를 원한다면 다른 것을 사용해야합니다 (예 : OpenWatcom). OpenWatcom은 또한 Linux (베타 !!) 호스트와 타겟 (IIRC는 없지만 공유 라이브러리는 없음)을 지원하지만 GCC로 직접 컴파일해야 할 수도 있습니다.