Вопрос

На моем уроке языка ассемблера мы пишем программы для DOS с использованием DPMI.К сожалению, у меня нет постоянного доступа к 32-битной машине с Windows.У меня установлена ​​виртуальная машина Debian практически на каждом компьютере, которым я пользуюсь.

У меня установлены DOSBox и DOSEMU.Есть ли способ собрать и скомпилировать программы в Linux, а не в DOS?Я использую nasm, поэтому, похоже, у меня нет проблем с его сборкой в ​​формате DOS.Однако у меня возникли проблемы с запуском его через компилятор с моим кодом C и получением исполняемого файла DOS (с использованием gcc или MinGW).

Есть ли какой-нибудь способ сделать это или мне придется устанавливать все инструменты под DOS?

Это было полезно?

Решение

Я даже не уверен, сможете ли вы скомпилировать DOS-приложения с помощью GCC.Давным-давно существовал вариант компилятора gcc под названием DJGPP (или что-то в этом роде).Хотя у меня так и не получилось.

Шансы на то, что вам удастся кросс-компилировать GCC для DOS, в наши дни практически равны нулю.

Я предлагаю вам попробовать старый компилятор Watcom.Это собственный компилятор DOS, и его реализация DPMI также прекрасно работает в DosBox.Взаимодействие с скомпилированными объектными файлами NASM также не является проблемой (я делал это пару лет)

Сегодня компилятор стал открытым и получил название OpenWatcom.

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

Другие советы

BCC находится в Debian и способен создавать достойный код для версий от 8080 до 80386.Использовать -Md переключитесь на создание двоичного файла MS-DOS.

Вероятно, самый простой способ — использовать для этой задачи стандартные инструменты DOS.

ДОСБОКС действительно хороший эмулятор.

DJGPP невероятно прост в установке, нужны как минимум три .ZIP-архива:

  1. BNU219B.ZIP (ассемблер, компоновщик, библиотекарь)
  2. GCC441B.ZIP (компилятор Си)
  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, вам придется либо использовать компилятор, размещенный в DOS, в DOSEMU (не DOSBox!!).слишком медленный и глючный, предназначен только для игр) или используйте кросс-компилятор под Linux (для этого на сайте DJ есть RPM).

Однако, если вам нужен 100% 16-битный код, вам придется использовать что-то другое (например,ОпенВатком).OpenWatcom также поддерживает хост и цель Linux (бета!!) (правда, без общих библиотек, IIRC), но вам, возможно, придется скомпилировать его самостоятельно с помощью GCC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top