Поиск 16-разрядного компилятора c для x86

Я работаю над переносом uc/OS-II с DOS на x86 (реальный режим). Я нуждаюсь:

  1. Компилятор для генерации 16-битной сборки x86 в реальном режиме

  2. Ассемблер для сборки сгенерированной сборки в объектный файл

  3. Компоновщик, чтобы связать объектные файлы вместе и вывести исполняемый файл (необработанные двоичные файлы, форматы COFF, PE или ELF подходят)

  4. Стандартная библиотека без вызова каких-либо служб DOS (int 21h) зависит только от службы BIOS.

Мне интересно, может ли какая-нибудь цепочка инструментов это сделать.

Ответ 1

Просмотрите проект FreeDOS. У них инструменты разработчика, которые включают компиляторы, сборщики и компоновщики. Возможно, вам придется изменить стандартную библиотеку, так что она использует вызовы BIOS, а не int 21h.

Ответ 2

16-битные компиляторы? Некоторые из них упоминаются здесь:

Есть ли компилятор C, который нацелен на 8086?

Обычно они используются для академических упражнений, поэтому, если у вас есть цель в учебном заведении, вы также можете найти множество примеров:

http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086

Ответ 3

На прежней работе у нас был проект, основанный на uc/OS, запущенном на платформе x86 реального режима. Мы использовали TopSpeed ​​C, а не более известные компиляторы Borland или Microsoft, потому что TopSpeed ​​C был единственным из доступных и доступных в то время наборов, который получил volatile вправо. Что вам очень нужно при создании uc/OS. Как Turbo C, так и Microsoft C (и я думаю, что QuickC тоже) неправильно скомпилированный доступ к переменным volatile - обычно кэширование значений в регистрах и аналогичных поломках.

У вас бы с трудом хватало TopSpeed ​​C. И его синтаксис ассемблера... уникален. (Я думаю, что это основано на Modula-2 или что-то в этом роде, оно очень отличается от MASM/TASM/nasm, с которым вы можете быть в 100 раз более знакомы.)

Ответ 4

Проверьте любой проект загрузчика, например GRUB. Должно быть очевидно, что им также нужно все, что вы упомянули.