Соответствие ассемблер - FREE PASCAL
Модератор: Модераторы
Соответствие ассемблер - FREE PASCAL
Есть ли версия ассемблера( отдельного ) для трансляции в объектный код, понимаемый FREE PASCAL, <имя модуля>.obj подключается в модуле на FREE PASCAL опцией {$L <имя модуля>.obj} . Все в среде MS DOS. Исходный текст ассемблерных файлов оттранслирован неизвестным ассемблером, но легко подключается классическим борланд паскалем. Сам FREE PASCAL не понимает объектный код файла <имя модуля>.obj.
Классический Борланд Паскаль использует объектники формата OMF, который в 16-разрядной системе был стандартом. В 32-разрядных Виндах стандартом является COFF, ну а в Линухе -- ELF, хотя в Винде существует и OMF32 (но его вроде только Турбо Ассемблер производить умеет, а он уж миллион лет как не поддерживается). По всей вероятности, Фри Паскаль просто не понимает столь древний код.
.obj это объектный формат данных компиляторов Borland (Turbo Assembler, C/C++). Если есть документация на .obj файлы, то можно попробовать прикрутить их поддержку в компилятор.
FreePascal использует объектный формат данных GNU tools (с расширением .o). Такие файлы создаются ассемблером 'as', входящим в комплект Cygwin и MinGw
FreePascal использует объектный формат данных GNU tools (с расширением .o). Такие файлы создаются ассемблером 'as', входящим в комплект Cygwin и MinGw
Ну, вот и объяснение. ГНУсные инструменты клепают Эльфы, а не ОМФ. Описание ОМФ нагуглить не проблема, а вот прикрутить поддержку...
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Эльфы только в линуксе. Для винды GNU as производит самый натуральный coff, хоть и с расширением .o.
Ну, всё равно не ОМФ, а Борланд Паскалю именно он нужен.
Да . . . . Мне бы без си и windows , переранслироваться в MS DOS. А так , правильно ли, что сейчас уже нельзя ничего найти для MS DOS, чтобы перевести ассемблерную программу в объектный код для FREE PASCAL? С уважением, ответьте
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Если программа написана на 16-битном ассемблере для MS-DOS, то скорее всего она без полного переписывания не состыкуется с 32-битным FPC, даже если удастся найти подходящий по выходном формату транслятор.
Я запутался: так исходник asm есть? Или только obj?
Если исходник есть, то не вариант ли вставить его как asm-процедуру (-ы)?
Если исходник есть, то не вариант ли вставить его как asm-процедуру (-ы)?
Для вставки в исходный текст приходится перерабатывать исходный текст достаточно много для процедуры- сам модуль резко увеличивается в размерах. Да и программа требует переработки для ассемблерной вставки.
А есть ли досовский ассемблер 32 - разрядный с объектным кодом, который понимает Free Pascal?
И еще одна странность - в win2000 запуск и трансляция во free pascal модуля проходит нормально- без ошибок, при запуске той же оболочки под ms dos в формате записи (record) появляются ошибки, не позволяющие продолжить трансляцию дальше.
Если есть ассемблер под ms dos 32- разрядный , где его можно поискать.
А есть ли досовский ассемблер 32 - разрядный с объектным кодом, который понимает Free Pascal?
И еще одна странность - в win2000 запуск и трансляция во free pascal модуля проходит нормально- без ошибок, при запуске той же оболочки под ms dos в формате записи (record) появляются ошибки, не позволяющие продолжить трансляцию дальше.
Если есть ассемблер под ms dos 32- разрядный , где его можно поискать.
ДОС -- 16-разрядная система, никаких 32-разрядных трансляторов там никогда и не было. Позднее появились расширители ДОС, но это уже надстройки над системой. В любом случае, 16-разрядный код просто так 32-разрядным не станет, нужна ручная переделка.
