Question

Pour ma classe de langue d'assemblage, nous écrivons des programmes DOS à l'aide de DPMI. Malheureusement, je n'ai pas accès à une machine Windows 32 bits tout le temps. J'ai une machine virtuelle Debian installée sur à peu près tous les ordinateurs que j'utilise.

J'ai installé DOSBox et DOSEMU. Est-il possible d'assembler et de compiler les programmes sous Linux plutôt que sous DOS? J'utilise nasm, il ne semble donc pas avoir de problème pour le faire assembler au format DOS. Cependant, je ne parviens pas à exécuter le compilateur avec mon code C et à obtenir un exécutable DOS (avec gcc ou MinGW).

Y at-il un moyen de faire cela ou vais-je devoir installer tous les outils sous DOS?

Était-ce utile?

La solution

Je ne sais même pas si vous pouvez compiler des applications DOS à l'aide de GCC. Il y a longtemps, il existait une variante du compilateur gcc appelée DJGPP (ou quelque chose du genre). Je ne l'ai jamais fait fonctionner cependant.

Les chances que vous puissiez compiler de manière croisée un GCC pour DOS sont presque nulles.

Je vous suggère d'essayer l'ancien compilateur Watcom. C'est un compilateur DOS natif et son implémentation DPMI fonctionne également comme un charme sous DosBox. L’interfaçage avec les fichiers d’objets compilés NASM n’est pas un problème non plus (je l’ai fait quelques années plus tard)

Aujourd'hui, le compilateur est devenu open source et appelé OpenWatcom.

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

Autres conseils

BCC est en Debian et est capable de produire un code correct pour 8080 jusqu'à 80386. Utilisez le commutateur -Md pour générer un fichier binaire MS-DOS.

La solution la plus simple consiste probablement à utiliser les outils DOS standard pour la tâche.

DOSBOX est un très bon émulateur.

DJGPP est ridiculement facile à installer, il suffit de trois fichiers .ZIP au minimum:

  1. BNU219B.ZIP (assembleur, éditeur de liens, bibliothécaire)
  2. GCC441B.ZIP (compilateur C)
  3. DJDEV204.ZIP (libc, en-têtes)

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

Pour produire une sortie compatible DOS, vous devez soit utiliser le compilateur hébergé sous DOSEMU (pas trop DOSBox !!, trop lent et bogué, réservé aux jeux), soit utiliser un compilateur croisé hébergé par Linux (DJ le site a les RPM pour cela).

Cependant, si vous voulez du code 100% 16 bits, vous devrez utiliser autre chose (par exemple, OpenWatcom). OpenWatcom prend également en charge l'hôte et la cible Linux (version bêta !!) (aucune bibliothèque partagée, cependant, IIRC), mais vous devrez peut-être le compiler vous-même avec GCC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top