Ответ 1
Просмотрите проект FreeDOS. У них инструменты разработчика, которые включают компиляторы, сборщики и компоновщики. Возможно, вам придется изменить стандартную библиотеку, так что она использует вызовы BIOS, а не int 21h.
Я работаю над переносом uc/OS-II с DOS на x86 (реальный режим). Я нуждаюсь:
Компилятор для генерации 16-битной сборки x86 в реальном режиме
Ассемблер для сборки сгенерированной сборки в объектный файл
Компоновщик, чтобы связать объектные файлы вместе и вывести исполняемый файл (необработанные двоичные файлы, форматы COFF, PE или ELF подходят)
Стандартная библиотека без вызова каких-либо служб DOS (int 21h
) зависит только от службы BIOS.
Мне интересно, может ли какая-нибудь цепочка инструментов это сделать.
Просмотрите проект FreeDOS. У них инструменты разработчика, которые включают компиляторы, сборщики и компоновщики. Возможно, вам придется изменить стандартную библиотеку, так что она использует вызовы BIOS, а не int 21h.
16-битные компиляторы? Некоторые из них упоминаются здесь:
Есть ли компилятор C, который нацелен на 8086?
Обычно они используются для академических упражнений, поэтому, если у вас есть цель в учебном заведении, вы также можете найти множество примеров:
http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086
На прежней работе у нас был проект, основанный на 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 раз более знакомы.)
Проверьте любой проект загрузчика, например GRUB. Должно быть очевидно, что им также нужно все, что вы упомянули.