Pergunta

Para minha classe linguagem de montagem, estamos escrevendo programas DOS usando DPMI. Infelizmente, eu não tenho acesso a uma máquina Windows de 32 bits o tempo todo. Eu tenho uma máquina virtual Debian instalado em praticamente todos os computadores que faço uso.

Eu tenho tanto DOSBox e DOSEMU instalado. Existe alguma maneira que eu possa montar e compilar os programas em Linux, em vez de DOS? Estou usando nasm, então eu não parecem ter quaisquer problemas em obter-lo assembledin formato DOS. No entanto, estou tendo problemas para executá-lo através do compilador com o meu código C e obter um executável DOS (usando gcc ou MinGW).

Existe alguma maneira de fazer isso ou estou praticamente vai ter que instalar todas as ferramentas sob o DOS?

Foi útil?

Solução

Eu nem tenho certeza se você pode compilar aplicativos DOS usando GCC. Há muito tempo atrás havia um gcc compilador de variante chamada DJGPP (ou algo parecido). Eu nunca tenho que trabalhar embora.

As chances de que você pode cross-compilar uma GCC para DOS estes dias são quase zero.

Eu sugiro que você dê o velho Watcom Compiler uma tentativa. É um compilador nativo DOS e da implementação DPMI também funciona como um encanto sob DosBox. Interface com arquivos objeto compilado NASM não é um problema, quer (eu fiz isso um par de anos)

Hoje, o compilador tem sido feito de código aberto e chamou OpenWatcom.

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

Outras dicas

BCC está em debian, e é capaz de produzir código decente para 8080 até 80386. Use o interruptor -Md para produzir um binário MS-DOS.

Provavelmente a maneira mais fácil de ir para você é usar as ferramentas padrão do DOS para a tarefa.

DOSBOX é realmente um bom emulador.

DJGPP é ridiculamente fácil de instalar, mínimo são necessários apenas três .zips:

  1. BNU219B.ZIP (assembler, linker, bibliotecário)
  2. GCC441B.ZIP (compilador C)
  3. DJDEV204.ZIP (libc, headers)

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 produzir saída DOS compatível, você terá que usar o compilador DOS hospedado no DOSEMU (não DOSBox !! muito lento e cheio de erros, destina-se apenas jogos) ou usar um compilador cruzado Linux hospedado (DJ de site tem as RPMs para isso).

No entanto, se você quiser código de 16 bits 100%, você terá que usar outra coisa (por exemplo OpenWatcom). OpenWatcom que também suportam Linux (beta !!) host e destino (libs não compartilhados, porém, IIRC), mas você pode ter que compilá-lo com o GCC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top