2009-03-15 26 views
9

Para mi clase de lenguaje ensamblador, estamos escribiendo programas DOS usando DPMI. Lamentablemente, no tengo acceso a una máquina de Windows de 32 bits todo el tiempo. Tengo una máquina virtual Debian instalada en casi todas las computadoras que uso.¿Cómo compilo programas de DOS en Debian?

Tengo DOSBox y DOSEMU instalados. ¿Hay alguna forma de que pueda ensamblar y compilar los programas en Linux en lugar de DOS? Estoy usando Nasm, así que no parece tener problemas para ensamblarlo en formato DOS. Sin embargo, tengo problemas para ejecutarlo a través del compilador con mi código C y obtener un ejecutable de DOS (usando gcc o MinGW).

¿Hay alguna manera de hacer esto o estoy más o menos va a tener que instalar todas las herramientas bajo DOS?

+0

Probablemente tengas que forzar una cadena de herramientas en tu vm de DOS. Lo sé, eso apesta. +1 y favorito, espero ver una buena respuesta a esto. –

+0

Intenta usar MASM en DOSBox ... – 23ars

Respuesta

7

Ni siquiera estoy seguro de si puede compilar aplicaciones de DOS usando GCC. Hace mucho tiempo había una variante del compilador de gcc llamada DJGPP (o algo así). Aunque nunca lo hice funcionar.

Las posibilidades de que pueda realizar una compilación cruzada de un GCC para DOS estos días son casi nulas.

Le sugiero que pruebe el viejo compilador Watcom. Es un compilador nativo de DOS y su implementación DPMI también funciona como un encanto en DosBox. La interconexión con los archivos de objetos compilados NASM tampoco es un problema (lo hice hace un par de años)

Hoy el compilador se ha convertido en código abierto y se llama OpenWatcom.

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

+0

DJGPP es lo que estamos utilizando para compilar programas de DOS en Windows, pero es un PITA completo y completo para instalar fuera de Windows (incluso en DOS). –

+1

Lo he instalado como i586-pc-msdosdjgpp-gcc y compilación cruzada con él usando '--cross-prefix = i586-pc-msdosdjgpp-' más trabajos que no. Acabo de compilar (solo por diversión) FFmpeg para DOS. –

3

Probablemente la forma más fácil de seguir para usted es utilizar las herramientas estándar de DOS para la tarea.

DOSBOX es un muy buen emulador.

7

BCC está en Debian, y es capaz de producir código decente para 8080 hasta 80386. Use el interruptor -Md para producir un binario de MS-DOS.

2

DJGPP es ridículamente fácil de instalar, mínimo sólo se necesitan tres .ZIPs:

  1. BNU219B.ZIP (ensamblador, enlazador, bibliotecario)
  2. GCC441B.ZIP (compilador C)
  3. DJDEV204.ZIP (libc, encabezados)

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 

para producir una salida compatible con DOS, tendrá que utilizar el compilador alojada-DOS en DOSEMU (no DOSBox !! demasiado lento y con errores, solo para juegos) o use un compilador cruzado alojado en Linux (el sitio de DJ tiene los RPM para eso).

Sin embargo, si usted quiere el 100% de código de 16 bits, tendrá que usar algo más (por ejemplo OpenWatcom). OpenWatcom también es compatible con Linux (beta !!) host y destino (sin libs compartidos, sin embargo, IIRC), pero es posible que tenga que compilarlo usted mismo con GCC.

Cuestiones relacionadas