Некоторые особенности пакета SOLID C для ОС Estex ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ СИ-КОМПИЛЯТОР Коды возврата компилятора (1-й и 2-й проходы): 00h - Ok 0FFh - были errors/warnings, ошибки выделения памяти или работы с файлами. 1-й проход компилятора 1. При компиляции "чужих" исходников ставить опцию "-k". 2. В опциях: -dNAME, -jN, -oNAME и -rP:S:H пробелы не допускаются. 3. Максимальная длина строки полного пути (disk\dir\file.ext) файлов равна 80 символов. 4. Файл "file.err" создается всегда по текущему пути входного .c файла. 5. Формат записи include-файлов только как: #include - поиск ведется только в подкаталоге "INCLUDE" расположения компилятора. #include "file.ext" - поиск ведется только в каталоге расположения входного .c файла. Задание пути в имени файла не допускается!. Имя папки "INCLUDE" зарезерви- ровано. 2-й проход компилятора 1. Позволяет компилировать несколько бОльшие исходники, по сравнению с фирменной версией. 2. Исправлены две фирменные ошибки: a) нельзя было указывать расширение для TMC-файлов b) зависание при компиляции запредельно больших исходников АССЕМБЛЕР Примечание: Поскольку ассемблер AS совместим с ассемблером M80 фирмы Microsoft по формату записи ассемблерных текстов - в качестве документации на AS исполь- зуется документация ассемблера M80. Отличие ассемблера AS от M80 заключается в том, что у AS отсутствуют некоторые команды M80 (в основном, управление вывода листингов). 1. Максимальная длина имен (включающих букву диска и каталоги) файлов равна 64 символа. 2. В псевдокоманде NAME('...') можно использовать также двойные (") кавычки. 3. Имя include-файла можно указывать без расширения. В этом случае будет использоваться расширение по-умолчанию ".asm". Это же правило действует и для входного asm-файла. 4. Поддерживаются три варианта записи недокументированных регистров: HX/XH LX/XL HY/YH LY/YL HIX/IXH LIX/IXL 5. Псевдокоманды "EQU" и "=" идентичны. 6. Максимальная длина имен глобальных меток, передаваемых в объектный файл (rel-файл) зависит от режима работы ассемблера: 6 символов - при указании опции "-t" 8 символов - по-умолчанию 30 символов - при указании опции "-x" (расширенный rel-формат) Следует отметить, что с объектными файлами расширенного rel-формата не работает библиотекарь. Поэтому при компиляции библиотечных файлов, не следует ассемблеру указывать опцию "-x". 7. Коды возврата ассемблера: 00h - Ok 0FFh - были errors/warnings, ошибки выделения памяти или работы с файлами. ЛИНКЕР При линковке готовых си-программ, собираемых с библиотекой "clib.irl" необхо- димо всегда указывать линкеру опцию "/gXMAIN". Она передает управление на начальный startup-код си-программ. См. исходники библиотеки "clib". 1. Линкер работает только с именами входных файлов. Указание диска и пути расположения файлов не поддерживается. 2. Исправлены фирменные глюки: a) неверная работа с "@list" файлом b) не отслеживались запросы на request-файлы 3. При вставке exe-заголовка, параметры равны: ORG = 4100h, Stack = 0C000h. (Значение ORG-a может быть изменено опцией "/r"). 4. Файл "list" - содержит одну ком-строку с агрументами. Отдельные аргументы могут начинаться с новой строки. В конце файла должна стоять пустая новая строка. Кол-во читаемых байт ограничено до 256 байт. 5. Поиск библы: сперва файл *.irl, после *.rel. Если не найден, выдается сообщение ошибки: "файл *.rel не найден". 6. Максимальная длина имен идентификаторов - 30 символов. 7. Метки вида ?labels не выводятся в sym-файл и на экран. Становятся "видимыми" только при опции /Q. 8. Отслеживается превышение размера 16kB для dll-библиотек (выдается предупреждение). 9. Коды возврата линкера: 00h - Ok 0FFh - были ошибки выделения памяти или работы с файлами. БИБЛИОТЕКАРЬ 1. Тип открываемого входного файла отслеживается не по его расширению, а по внутреннему содержимому. 2. При создании библиотеки: если имя библиотеки совпадает с именем входного файла, то необходимо указать расширение библиотеки, чтобы не было двойного добавления файлов. В именах rel-файлов расширение можно не указывать. Имена добавляемых файлов разделяются пробелами или запятыми. 3. Глобальные символы "*" и "?" поддерживаются только для режима извлечения модулей (опция "e"). В остальных режимах необходимо указывать реальное имя файла. 4. Задание пути поддерживается только для файла библиотеки. Для rel-файлов указание пути не поддерживается и используется путь расположения библиотеки. 5. В опции l(ist) (список модулей библиотеки), размеры "Code size: ..." и "Data size: ..." выводятся в десятичном формате. 6. В опциях d(ump) и l(ist) вывод на экран можно остановить/продолжить при нажатии на любую клавишу. При нажатии на Esc - выход из режима. 7. Коды возврата библиотекаря: 00h - Ok 0FFh - были ошибки работы или операций с файлами.