Разное

Pascal turbo команды: Free Pascal — реализация языка программирования Pascal

1.3.3. Пункт Run (запуск на выполнение) . Программирование в среде Турбо Паскаль

Этот пункт основного меню предоставляет несколько различных способов запуска программы на выполнение. В его подменю (рис. 1.12) представлено шесть команд, каждой из которых соответствуют

— 21 —

Рис. 1.12

комбинации функциональных клавиш. Это сделано для быстрого доступа к командам. Рассмотрим их подробнее.

1.3.3.1. Команда выполнения Run (Ctrl+F9). Эта команда инициализирует запуск текущей программы. Если программа еще не откомпилирована или после компиляции в нее были внесены изменения, то команда Run сначала компилирует ее. В конце работы программы окно Output заменяется экраном среды. Если требуется еще раз взглянуть на результат работы программы, то надо нажать комбинацию клавиш Alt+F5 (аналогичный результат дает команда User screen в этом же пункте меню). Если система находится в режиме отладки, то по команде Run программа будет далее выполняться в обычном режиме.

1.3.3.2. Команда прекращения отладки Program Reset (Ctrl+F2). После этой команды процесс отладки программы прекращается. При этом система не освобождает всю память, которую занимал код программы при отладке, поэтому точки останова и переменные просмотра (см. разд. 1.3.7.1) остаются.

1.3.3.3. Команда выполнения до курсора Go To Cursor (F4). С помощью этой команды можно запустить программу в работу. Ее выполнение будет происходить до тех пор, пока отладчик не достигнет строки, в которой находится курсор в окне Edit (при этом сама эта строка выполняться не будет). Таким образом, появляется возможность начинать отладку с любого места программы, например из процедуры, в которой предполагается ошибка.

Воспользоваться командой Go To Cursor можно в любой момент работы системы с редактором или отладчиком. При этом в режиме отладки программа выполнится без остановок (за исключением явно заданных точек останова) до курсора.

В режиме редактирования по команде F4 будет произведена компиляция программы и ее запуск.

1.3.3.4. Команда детальной трассировки Trace Into (F7). Во время пошаговой отладки команда Trace Into задает выполнение текущей строки программы. Для того чтобы проследить за логикой выполнения программы или за изменением некоторых переменных при выполнении определенных строк, необходимо подавать эту

— 22 —

команду на каждом шаге. Будучи поданной в режиме редактирования, команда Trace Into инициализирует режим отладки и устанавливает отладочную метку в первую выполняемую строку программы.

Если отладочная метка находится на строке, содержащей вызов функции или процедуры, то команда Trace Into передаст управление им (это может повлечь за собой загрузку дополнительного файла, содержащего текст этой процедуры) и установит метку на их первую выполняемую строку. При достижении конца процедуры отладчик вернется к основному файлу и поставит метку на следующую после вызова строку.

1.3.3.5. Команда выполнения по строкам Step Over (F8). Эта команда очень похожа по управлению и действиям на команду Trace Into, однако не совершает «заходов» в процедуры и функции, просто выполняет их как одну строку основной программы.

1.3.3.6. Команда просмотра результатов User Screen (Alt+F5). С помощью этой команды можно просматривать результат не только на текстовом экране, но и на графическом, что бывает очень полезно при работе с модулем Graph (см. гл. 19 «Модуль Graph»).

Pascal: операторы и команды OTUS

Pascal – язык программирования, используемый новичками. Он подходит для изучения основ алгоритмизации. Практическое применение языка Паскаль в обыденной жизни сильно ограничено. В своем «чистом» виде он используется крайне редко, в основном, для обучения. В основном встречаются различные диалекты этого ЯП.

Pascal является достаточно простым для изучения языком. В его основе лежат операторы и функции. Далее предстоит рассмотреть их более подробно. Также необходимо изучить структуру программы, написанной на Паскале. Эта информация больше подойдет новичкам, которые ранее не имели дел с разработкой программного обеспечения.

Паскаль – это…

Pascal – универсальное средство программирования со строгой структурой программ, а также типизацией. У него интуитивно понятный синтаксис, основанный на ABC. Она напоминает английский.

Паскаль разработан в 1970-х годах. Он базируется на Algol-68. Никлаус Вирт, швейцарский ученый, решил представить Pascal студентам. С его помощью ученикам предлагалось вникнуть в суть структурного программирования.

Pascal – императивный алгоритмический язык. Имеет множество диалектов:

  • UCSD;
  • Object;
  • Turbo – один из самых популярных вариантов;
  • Midlet;
  • PascalABC.NET – основанный на платформе .NET.

Также можно встретить диалекты Free, TMT и GNU.

Особенности работы

Пас каль – императивный язык. Он позволяет представлять программы в качестве набора операторов (команд), которые выполняются последовательно. Здесь необходимо запомнить следующие правила:

  • операторы обрабатываются друг за другом;
  • каждая следующая команда использует данные, полученные на предыдущем этапе обработки исходного кода;
  • результаты выполнения операторов будут записаны программой непосредственно в память устройства.

Pascal – это язык с сильной (строгой) типизацией. За счет этого различные элементы и конструкции программы (функции, операторы, переменные, модули и так далее) получают конкретные, заранее определенные свойства. Такой прием помогает понять системе, какие операции можно выполнять с каждым записанным выражением. Это способствует избавлению от большинства ошибок компиляции. Программы, написанные на рассматриваемом ЯП, являются более устойчивыми к аварийным отказам.

Плюсы и минусы

Паскаль – язык, который изучается на уроках под названием «Информатика» в старших классах общеобразовательных учреждениях. В своем первоначальном виде он практически не встречается, но некоторые его диалекты до сих пор пользуются спросом в некоторых областях. Паскаль обладает преимуществами и недостатками, которые необходимо знать. Эта информация поможет выяснить, стоит ли изучать ЯП более подробно, или лучше отдать предпочтение другому.

Сильные стороны языка

Паскаль имеет следующие преимущества:

  1. Простой и понятный синтаксис. За счет этого его сможет быстро освоить даже новичок.
  2. Изучение в школьной программе на уроке «Информатика». Pascal служит базовым языком разработки, помогающий разобраться в принципах создания программного обеспечения.
  3. Компилируемость. Программа, написанная на рассматриваемом языке, может быть переведена в машинный код без дополнительного обеспечения. Пользователю не придется устанавливать ни виртуальные машины, ни интерпретаторы. Скрипт будет работать «по умолчанию».
  4. Строгая типизация. С ее помощью удается свести ошибки в итоговой программе к минимуму. Также это помогает оптимизировать работу с памятью устройства.
  5. Структурированность программ. Код получается читабельным и понятным. Найти в нем даже неочевидные ошибки оказывается намного проще, чем в случае с другими языками разработки.
  6. Множество диалектов.
  7. Работа программ, написанных на Паскале, базируется на последовательном выполнении операторов и функций. Никаких сложных связей и объектов.

Это – неплохой вариант для тех, кто только учится программировать. Более опытным разработчикам Паскаль не нужен. А вот на уроке «Информатика» в школе или при самостоятельном погружении в азы разработки программного обеспечения, он более чем пригодится. На основе элементарных операций данный ЯП объяснит достаточно сложные процессы.

Слабые стороны

Pascal имеет такие недостатки:

  1. Сильная ограниченность взаимодействия с компонентами, написанными на других языках программирования.
  2. Меньшая приспособленность для решения некоторых узкоспециализированных задач.
  3. Ограниченные возможности работы с динамической памятью, а также массивами с переменной длиной.
  4. Относительно небольшая функциональность – для большинства современных приложений и игр встроенных возможностей Паскаля будет не хватать.

Все это приводит к тому, что упомянутый язык имеет в реальной жизни сильную ограниченность. Программ на нем, имеющих практическое применение, очень мало. Диалекты Pascal используются для некоторых узкоспециализированных задач.

Этот язык сложно назвать стремительно развивающимся и современным. Он устаревает, но не теряет своей популярности из-за структурированности и дружелюбности. Учить его рекомендуется преимущественно новичкам.

Области применения

Pascal подойдет для написания первых программ при погружении в основы разработки. Он используется в следующих сферах жизни:

  1. Промышленность. В основном подразумевается написание программ на диалектах Object и Turbo. На них создаются программы для оборудования с микроконтроллерами.
  2. Бизнес. В современных бизнес-приложениях используется в единичных случаях. Паскаль пользовался спросом в 2000-х годах в соответствующем направлении. Некоторые компании до сих пор используют написанные тогда программы для решения отдельных задач. Новое программное обеспечение на Паскале для бизнеса не пишется.
  3. Разработка новых ЯП. Pascal – это язык, который залег в основу большинства современных популярных средств разработки. Некоторые производители придумывают собственные диалекты для ТВ-приставок, а также бытовой техники и электроники.
  4. Школа. В России и других странах мира данный ЯП применяется для обучения основам разработки «с нуля».

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

Терминология

Перед изучением структуры приложений, а также команд и операторов Паскаля, каждый разработчик должен запомнить несколько терминов и понятий. Они пригодятся всем, независимо от выбранного для дальнейшего применения ЯП:

  1. Алгоритм – набор инструкций и команд. Они используются для решения поставленной задачи.
  2. Переменная – место хранения информации и памяти. Поддерживает некоторые операции – удаление, считывание и запись, корректировку.
  3. Указатель – переменная, которая включает в себя адрес места в памяти. С его помощью удается обращаться к конкретному элементу массива.
  4. Массив – список или группа схожих типов значений данных, которые ранее прошли группировку. Все значения в пределах упомянутого элемента будут обладать одним и тем же типом данных. Отличаются они исключительно по положению в массиве.
  5. Символ – элементарная единица отображения данных в программе. Равняется одной символьной или буквенной записи.
  6. Класс – набор связанных объектов с общими свойствами. Этот термин применим к объектно-ориентированному программированию.
  7. Константа – значение, которое всегда остается неизменным.
    Оно не изменяется на протяжении всего периода работы приложения.
  8. Тип данных – классификация информации определенного типа.
  9. Цикл – петля. Последовательность инструкций, которые будут повторять один и тот же процесс многократно. Делается это или до достижения ранее указанного в коде условия, или до получения команды на остановку.
  10. Итерация – проход через заданный набор операций, работающих с программным кодом.
  11. Ключевое слово – слово, зарезервированное синтаксисом языка. Используется для описания команд, функций, а также иных инструментов/возможностей ЯП.

Также стоит обратить внимание на определения «операнд» — объект, которым можно управлять через разные операторы. Оператор – это элемент кода, способный манипулировать через специальные команды имеющимися операндами. Далее этот момент будет изучен более подробно.

Структура программы

Паскаль – язык, в котором программы обладают строго определенной структурой. Они делятся на «смысловые» блоки, называемые «разделы». Каждый вариант отвечает за определенные возможности и информацию:

Как называются разделыОсобенности и описание
ProgramНеобязательный блок. Служит для формирования имени программы. Выводит на экран при обработке исходного кода имя проекта.
Uses crt, graphПодключаемые модули. Ctr – блок, который используется для очистки экрана после выполнения тех или иных операций. Работает при помощи команды clrscr. Graph отвечает за внедрение в исходный код приложения возможностей работы с графикой.
LabelМетки. Раздел, в котором используется команда Goto. Он помогает перейти к элементам, помеченным в качестве «закладок». Служит безусловным переходом.
ConstРаздел, отвечающий за постоянные величины – константы. Поддерживает фиксированный тип значений. Здесь записываются имена констант и их параметры. Тип определяется автоматически.
VarБлок переменных. Соответствующий идентификатор получает тип информации, которая будет записываться.
Function/ProduceБлок вспомогательных подпрограмм и функций. Используются для быстрой разработки приложений с минимальными трудностями.
BeginНачало тела программы. Правила синтаксиса рассматриваемого ЯП указывают на то, что после слова begin необходимо указывать операторы, команды и функции, которые должны быть выполнены. Раздел представлен последовательностью команд. Он поддерживает значения и величины для выполнения обозначенного спектра задач.
EndКонец тела приложения. Все, что указано после end, не является часть исходной программы.

Данная таблица поможет разобраться в основах составления структуры исходного кода на Паскале. Для нормальной работы программы достаточно несколько блоков. Остальные являются необязательными. Основные разделы – это тело, включающее в себя begin и end. Без него ни один написанный код не будет обрабатываться.

Типизация данных

Правила синтаксиса Pascal поддерживают строгую типизацию данных. Это указывает на то, что все переменные исходного кода будут иметь определенный заранее тип. Приложению напрямую указывают, какой именно вид данных использовать для дальнейшего хранения значений. Это помогает устройству понять, какие операции разрешено выполнять с имеющимися элементами.

Условно типы данных можно разделить на две крупные категории: структурированные и простые. Каждый вариант имеет подтипы, зная о которых, удается создать оптимально функционирующий программный код.

Простые типы

Перед изучением операторов Паскаля, рекомендуется хорошенько разобраться с типами данных. Простые виды делятся на порядковые и ограниченные. Они являются элементарными и встречаются в программных кодах чаще остальных.

Целочисленные

К данной категории относятся целые числа. Она является наиболее популярной среди всех встроенных. Всего в Паскале поддерживаются пять его разновидностей:

Как называетсяДиапазон принимаемых значенийФормат записи
Integer-32 768…32 76716 bit
Short int-128…+1278 bit
longInt-2 147 483 648…+2 147 483 64732 bit
Word0…65 53516 bit без учета знака
Byte0…2558bit без учета знака

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

  1. Тип целой константы определяется как встроенный целочисленный тип с наименьшим диапазоном, включающим значение соответствующей целой константы.
  2. Если используется бинарная операция (в выражении участвуют два операнда), оба операнда будут преобразованы к общему типу. Арифметические действия до этого момента не выполняются.
  3. Выражения, написанные в операторах присваивания с правой стороны, будут вычисляться независимо от того, какая переменная расположена с левой.

Чтобы описать целочисленную переменную, необходимо воспользоваться ключевым словом var. Формат записи: var <перечень используемых переменных><тип>. Угловые скобки во время составления программного кода ставить не требуется.

Вещественные

Следующий вариант – это вещественный тип информации. Сюда можно отнести числа с плавающими запятыми. Они имеют фиксированной количество цифр.

Для данного вида переменных используется ключевое слово real. Форма записи: var <перечень переменных:=> real.

Символьные

Символьный тип значений и переменных используется для того, чтобы работать с различными записями. Каждый символ имеет:

  • собственный код;
  • номер.

Сформировать символьный вид переменных можно при помощи формы: <тип><название_переменной(‘значение’)>. Апостроф тоже может стать символом в программе. Для этого его необходимо заключить в соответствующие «кавычки».

Перечисляемые

Это – перечисление констант в строго определенном порядке, а также количестве. Представлен данный вид переменных списком неизменных элементов кода. Они будут принимать значения из заданного спектра констант.

Форма записи:

<список констант> – специальный вид констант. Они задаются в программном коде через запятую. Имеют собственный порядковый номер, начинающийся с 0.

Ограниченные

Ограниченные переменные – переменные, принимающие не все значения в пределах заданного типа. Они будут определяться в некотором ограниченном диапазоне. Каждый такой вариант задается при помощи наложения ограничений на базовые переменные.

Записывается в коде программы так:

Здесь необходимо запомнить такие правила составления:

  1. Обе ограниченные константы имеют один и тот же тип.
  2. В качестве базового типа допускается использование любого простого. Исключение всего одно – это действительные переменные (real).
  3. Начальные значения при определении ограниченного типа не могут быть больше, чем итоговые.

А вот – пример блока кода, позволяющий составить ограниченный тип переменных в Паскале.

Структурированные

К данной категории относятся типы, определяющие наборы однотипных или разнотипных элементов. Они могут быть образованы из других видов информации. Представляются различными элементами. Могут выступать:

  1. Массивами. Они бывают одномерными и многомерными. Так называется определенное и известное количество однотипных компонентов, прошедшие процедуру индексации.
  2. Записями. Поддерживают несколько полей в составе разного характера. Пример – описание продукции, хранимой на складе в магазине.
  3. Строками. Так называется последовательность символов кодовых таблиц устройства. Включают в себя от 0 до 255 компонентов.
  4. Множествами. Это – набор взаимосвязанных по установленным признакам элементов программного кода. Во множестве не может быть более 255 составляющих.
  5. Файлами. Файл представляет собой последовательность однотипных компонентов, которые записаны на внешнем носителе под установленным заранее именем. Их вид может быть любым, исключая непосредственно file. Размер программистом не указывается.

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

Операторы в Pascal

Оператор – средство, при помощи которого в приложении описываются действия (команды) в рамках действующего алгоритма для решения изначально поставленной задачи. Элементы такого плана могут быть помеченными или нет. Их можно разделить на несколько категорий:

  • простые операторы;
  • структурные.

Оператор в Pascal используется для того, чтобы описать действия. Других целей применения он не имеет. Отделяются на письме операторы при помощи специального разделителя – символа «точка с запятой». Его можно не ставить, если оператор ставится перед until, else или end.

Простой оператор состоит из:

  • оператора присваивания;
  • оператора вызова процедуры;
  • оператора перехода.

Структурные операторы поддерживают условные операторы, циклы и составные.

Присваивание

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

Совместимость поддерживается, если:

  • переменные записаны через один и тот же описатель;
  • порядковый тип поддерживает значения типа-диапазона;
  • вещественные переменные (real, single, double) могут работать с целочисленными значениями.

Оператор присваивания выглядит как «:=» (без кавычек). Форма записи будет такой:

, используемое выражение a может включать в себя скобки, знаки арифметических операций, а также константы, переменные и имена функций.

Все действия здесь выполняются в направлении «слева-направо» с учетом действующих правил приоритета:

  • not;
  • умножение, деление, mod, and, div;
  • сложение, вычитание, or;
  • сравнивание и in.

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

Вызов

Команда вызова – одна из базовых составляющих исходного кода программного обеспечения. Она приводит к непосредственному обращению к указанному разработчиком алгоритму. Состоит из:

  • имени процедуры;
  • списка аргументов, указываемых в круглых скобках.

Аргумент – необязательный элемент. Он может отсутствовать при использовании команды вызова. При ее обработке происходит активация действий, написанных в теле процедуры или в описании.

Переходы

Изучая разделы языка Паскаль, было упомянуто о метках. Они пригодятся при работе с командой перехода. Она задается служебным словом Goto. Используется для передачи управления приложением оператору, отмеченному той или иной меткой.

Метки могут быть использованы только после того, как программист опишет их в разделе Label. Goto необходимо задействовать очень осторожно из-за безусловности перехода. Эта команда противоречит всем принципам структурного программирования. Неправильное использование Goto может привести к ошибкам и выходу приложения из строя.

Пустой

Пустой оператор не выполняет никаких действий. Он никак не будет проявлять себя при запуске исходного кода программного обеспечения. Обычно в этом случае печатает метки, а также точки с запятыми. Используется для безусловного перехода на него.

Составной

Operator, который используется для выполнения некоторого спектра команд, определяемых разработчиком. Он указывается в теле приложения – между begin и end.

Составные operators помогают выполнять некоторую последовательность инструкций. Они задаются ключевым словом begin, заканчиваются end. Между этими элементами вставляются операции, необходимые для дальнейшей реализации.

Рассматривается соответствующий компонент как единое целое. Расположение допустимо в любой части исходного кода.

Условные

Поддерживают выбор одного или нескольких действий в зависимости от установленного разработчиком критерия. Условием выборки станет значение логического выражения – true или false.

Всего условных «команд» в Паскале два: if и case.

IF помогает организовывать вычисления в зависимости от логического условия. Имеет полную и краткую формы записи. Может быть вложенным. В этом случае рекомендуется пользоваться такой формой представления:

Для вложенных If действует правило – else связано с ближайшим if, которое до этого не было привязано к другим else.

Выбор

Запись case…of…end – это определение альтернативных действий из произвольного спектра изначально заданных условий. Состоит из селектора и списка постоянных параметров, каждому из которых предшествует список констант выбора.

Выглядит так:

Здесь:

  1. <выражение-селектор> – порядковое выражение. От его значения будут приниматься решения относительно дальнейших операций.
  2. <список1>…<списокN> – значения, с которыми будет сравниваться селектор.
  3. <оператор1>…<операторN> – выражения, среди которых выбирается операция для дальнейшей реализации. Таким станет элемент, с константой которого впервые совпадет селектор.

Ветка с условием else – необязательный элемент. Условие If указывается всегда. Если действия для нескольких селекторов окажутся одинаковыми, разработчик сможет перечислить соответствующие константы через запятую перед двоеточием. Правила синтаксиса допускают установку диапазона значений по верхним и нижним границам.

Циклы

Цикл – это выполнение некоторых алгоритмов друг за другом несколько раз. Программирование поддерживает несколько их видов: итерационные и с параметром.

Цикл с параметром всегда требует использования операторов цикла. Иногда такой вариант называется регулярным циклом. Его характерной чертой является то, что количество повторений команд известно заранее.

Итерационный цикл таких возможностей не предусматривает. В нем количество повторений не определяется заранее. Операции будут выполнять до тех пор, пока выполняется условие продолжения «петлей».

Паскаль поддерживает несколько видов циклических структур:

  1. Счетный operator – for. Он используется для реализации циклов с параметрами. Для итерационной петли не подходит.
  2. С предусловием – while.
  3. С постусловием – repeat.

While и repeat поддерживают реализацию итерационного цикла. Они также могут быть использованы для циклических структур с параметрами.

For

Как выглядит структура программы на языке Паскаль, понятно. Зная ее, можно с легкостью освоить циклы и использовать их на практике. Первый вариант – это for. Выглядит он так:

Начальные и конечные значения здесь должны быть точно такого же типа, что и имеющийся параметр.

Сначала параметр цикла принимает начальное значение. После этого происходит проверка: соответствующее значение меньше или равно итоговому. Данное условие выступает условием продолжения цикла. Если оно выполнено, петля продолжает функционирование. Выполняется необходимая команда, после чего параметр цикла уменьшается на единицу. Условие реализации заданной операции снова сравнивается – уже с новым значением.

While

Цикл с постусловием работает так:

  1. Сначала проводится проверка результата логического условия.
  2. Если итог – true, происходит выполнение операции. Далее система возвращается на проверку условия с новым значением параметров в логическом выражении условия.
  3. Если результатом служит ложь (false), система завершает цикл.

Выше – форма представления соответствующей петли. Здесь необходимо запомнить следующие правила:

  • условия, написанные в while – это требования, при которых цикл будет продолжаться;
  • в теле цикла всегда меняется значение параметра входящего в выражение условия;
  • while может не выполниться ни разу.

Предложенный пример – это обработка записей формы. Она будет выполняться, пока не достигнуто окончания набор данных.

Repeat

Repeat работает так:

  1. Сначала выполняются команды тела цикла.
  2. Результат проверяется с логическим условием. Если он является ложью, то происходит возврат к выполнению операторов очередного тела цикла.
  3. Когда результат сравнения – истина, система прекращает работу с циклической структурой.

Форма записи:

В repeat проверяются условия завершения цикла. Если оно выполняется, петля перестает работать. Тело циклической структуры будет реализовано хотя бы один раз. Параметры для проверки условия изменяются в теле петли.

Здесь можно узнать больше интересного о Паскале.  

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus! 

Древняя история: могла ли какая-либо версия Turbo Pascal компилироваться в защищенном режиме на 286 или выше?

спросил

Изменено 4 года, 4 месяца назад

Просмотрено 721 раз

Я помню Turbo Pascal 6.0 1990-х годов, в котором было несколько переключателей компилятора для функций, специфичных для 80286, и все с примечанием, что они работают только в реальном режиме, но не в защищенном режиме. Был ли когда-нибудь у Turbo Pascal компилятор, который мог бы компилироваться в защищенный режим 286? (Можно ли использовать эту функцию для написания собственных программ для OS/2?)

  • история
  • защищенный режим
  • турбопаскаль

Да. Borland Pascal 7 поддерживал 16-разрядные программы PM для DOS и Win 3.x. Но он больше не доступен (и коммерческие лицензии очень дороги на вторичном рынке). Чтобы заставить его работать с OS/2, вам, вероятно, потребуется переработать всю модель расширителя, чтобы она соответствовала OS/2. (например, EMX) Это могло бы быть сделано, но результат, вероятно, будет неуклюжим, чтобы сказать лучший (и основанный на EMX, а не родной)

Однако есть два клона TP/Delphi, которые поддерживают почти весь диалект TP и даже частично Delphi:

  • Virtual Pascal. Вне активной разработки почти десять лет, но все еще работает и является бесплатным. То, что осталось от сообщества VP, здесь. Поддержка Delphi примерно до D2.
  • Free Pascal все еще поддерживается, а поддержка Delphi представляет собой смесь версий с текущим центром притяжения D2006/2007. Порт OS/2 по-прежнему поддерживается, но продвигается медленно

Оба генерируют код 386+, и это может быть проблемой, если у вас есть большое количество 16-битного ассемблера, который вы хотите портировать (но они, вероятно, также нуждаются в проверке для перехода на защищенный режим 286)

В общем, я Я бы посоветовал Free Pascal, но поскольку порт VP для OS/2 когда-то был очень популярен, в этом случае, возможно, стоит хотя бы взглянуть и на VP. Особенно, если проект ограничен по объему и времени. В долгосрочной перспективе Free Pascal, поскольку все еще активный проект, является лучшим выбором.

1

16-битный набор инструментов Family API Джонатана де Бойна Полларда можно было связать с Turbo Pascal (я точно не помню, какая версия, возможно, потребовалось исправление tpc.exe ) для создания 16-битного консольного режима OS/2. программы.

Я только что нашел здесь ссылку на набор исправлений — ссылка на немецкий компьютерный журнал C’T.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

fpc: бинарный компилятор Free Pascal Compiler (FPC) | команды fpc | Man Pages

Free Pascal Compiler (FPC) binary

Synopsis

fpc [options] [sourcefile]

Description

Этот бинарник является основным бинарником Free Pascal9 8007 Compiler9 Турбо Паскаль и Delphi (7. 0) -совместимый автономный (не интерфейс GCC) многоцелевой компилятор Pascal.

Компилятор использует LD (1) и может использовать AS (1) (см. параметр -Aas), но также имеет собственный модуль записи двоичных объектов.

Текущие основные цели: Go32V2 (расширитель Dos DJGPP), Freebsd, Linux, MacOS, MacOSX, MorphOS, Netware, OS/2 и Win32. Другие цели (компиляторы M68K для Atari и Amiga) либо основаны на более старых версиях компилятора, либо все еще находятся в разработке.

Эта справочная страница предназначена только для быстрого ознакомления. FPC поставляется с отличным руководством (более 2000 страниц), которое постоянно обновляется, хотя эта справочная страница может быть устаревшей.

Номер версии

Начиная с версии 1.0 реализована новая система управления версиями. Если последнее число четное (1.0, 1.0.2), оно стабильно, а если последнее число нечетное, это ежедневно меняющаяся версия разработки (1. 0.5, 1.1), как и ядро ​​Linux.

Версия 0.99.5, однако, является стабильной. Это было сделано до того, как была введена система именования четных/нечетных версий.

Использование

Процесс компиляции начинается с ввода fpc , за которым следует имя исходного файла (обычно с расширением .pas или .pp). Перед обработкой фактической обработки исходного файла fpc.cfg(5) считывается файл конфигурации компилятора, который содержит расположение RTL, других пакетов (FCL, FreeVision) и, возможно, значения по умолчанию для некоторых переключателей. См. отдельную справочную страницу fpc.cfg(5) для получения дополнительной информации.

Опции

Общие опции

-h

если вы укажете эту опцию, компилятор выведет список всех опций и после этого завершит работу.

-?

то же самое, что и -h, но ожидание клавиши ввода после каждого заполнения экрана.

-i

Эта опция указывает компилятору напечатать информацию об авторских правах.

Вы можете указать параметр, например -ixxx, где «xxx» может быть одним из следующих:

D

Возвращает дату компилятора.

V

Возвращает версию компилятора.

SO

Возвращает ОС компилятора.

SP

Возвращает процессор компилятора.

TO

Возвращает целевую ОС.

TP

Возвращает целевой процессор.

-l

Вверху выведите строку, указывающую, что это за программа и ее версию.

-N

сообщает компилятору не читать файл конфигурации FPC.CFG (5)

варианты для получения отзывов

-V xxx
120112111121121111121111111112112111112111211121112121211121212121212121212121212121тели
. «xxx» представляет собой комбинацию следующих значений:

e

Указывает компилятору отображать только ошибки. Эта опция включена по умолчанию.

i

Указывает компилятору показать некоторую общую информацию.

w

Указывает компилятору выдавать предупреждения.

n

Указывает компилятору делать примечания.

h

Указывает компилятору выдавать подсказки.

l

Указывает компилятору отображать номера строк при обработке файла. Числа показаны на 100.

u

Указывает компилятору печатать имена открываемых им файлов.

t

Указывает компилятору напечатать имена файлов, которые он пытается открыть.

p

Указывает компилятору печатать имена процедур и функций по мере их обработки.

c

Указывает компилятору предупреждать вас, когда он обрабатывает условное выражение.

m

Указывает компилятору записать, какие макросы определены.

d

Указывает компилятору записать другую отладочную информацию.

a

Приказывает компилятору записать всю возможную информацию. (это то же самое, что указать все параметры)

0

Указывает компилятору не писать сообщения. Это полезно, когда вы хотите переопределить настройку по умолчанию в файле конфигурации.

b

Указывает компилятору показать все объявления процедур в случае возникновения ошибки перегруженной функции.

x

Указывает компилятору вывести некоторую информацию об исполняемом файле (только для платформы Win32).

r

Режим совместимости Rhide/GCC: ошибки форматируются по-разному, чтобы RHIDE их понимал.

Параметры, относящиеся к файлам и каталогам

-e xxx

сообщает компилятору, что xxx — это каталог, в котором он может найти исполняемые файлы (ссылка на ассемблер) as (ссылка на ассемблер).

-FD

то же, что и -e.

-FE XXX

Эта опция сообщает компилятору для записи ошибок и т. Д. В файл XXX

-FE xxx
-FE xxx
9
-FE xxx
9
-FE xxx
111119 -FE xxx
9
-FATE xxx
-FE .

-Fi xxx

добавляет xxx к пути, по которому компилятор ищет включаемые файлы.

-Фл xxx

Добавляет xxx к пути поиска библиотеки и передается компоновщику.

-FL xxx

(только для Linux) Указывает компилятору использовать xxx в качестве динамического компоновщика. По умолчанию это /lib/ld-linux.so.2 или lib/ld-linux.so.1, в зависимости от того, какой из них найден.

-Fo xxx

Добавляет xxx к пути к объектному файлу. Этот путь используется при поиске файлов, которые необходимо связать.

-Fr xxx

сообщает компилятору, что xxx содержит сообщения компилятора. По умолчанию компилятор имеет встроенные сообщения. Указание этой опции переопределит сообщения по умолчанию. (полезно, если вы хотите использовать язык, отличный от языка по умолчанию).

-Fu xxx

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

-FU xxx

Указывает компилятору записывать модули в каталог xxx вместо текущего каталога.

-I xxx

Добавьте xxx к пути поиска включаемого файла. Этот путь используется при поиске включаемых файлов.

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

Указывает компилятору не удалять файл ассемблера. Это также относится к (возможно) сгенерированному пакетному сценарию.

-al

Указывает компилятору включить строки исходного кода в ассемблерный файл в качестве комментариев.

-an

Указывает компилятору включить информацию об узле в сгенерированный файл ассемблера. Это в основном для использования разработчиками компилятора.

-ap

Указывает компилятору использовать конвейеры для связи с ассемблером.

-ar

Указывает компилятору включить информацию о выделении/освобождении регистров.

-at

Указывает компилятору включить временную информацию о выделении/освобождении регистров.

-A xxx

указывает, какой ассемблер должен быть сгенерирован. Здесь xxx является одним из следующих:

AS

Файл unix .o (объект), использующий GNU AS

coff

объектный файл coff (go32) с использованием внутреннего модуля записи.

по умолчанию

Использовать модуль записи по умолчанию для текущей платформы.

elf

объектный файл elf (linux, только 32-разрядная версия), использующий встроенный модуль записи.

nasmcoff

файл coff с использованием ассемблера nasm .

насмельф

файл ELF32 (только для LINUX) с использованием ассемблера nasm .

nasmobj

файл obj с использованием ассемблера nasm .

masm

Файл obj, использующий ассемблер Microsoft masm .

pecoff

объектный файл pecoff (win32) с использованием внутреннего модуля записи.

tasm

Файл obj с использованием Borland тасм ассемблер.

wasm

Файл obj, использующий ассемблер Watcom.

-Ccxxx

установить соглашение о вызовах по умолчанию на XXX.

-CD

Создать динамическую библиотеку.

-Ce

Компиляция с использованием эмулированных инструкций с плавающей запятой.

-Cfxxx

Установите для используемого набора инструкций с плавающей запятой значение xxx.

-Cg

Сгенерировать код PIC.

-Ch xxx

Резервы xxx байт кучи. xxx должно находиться в диапазоне от 1024 до 67107840.

-Ci

Сгенерировать код проверки ввода/вывода.

-Cn

Пропустить этап связывания.

-Co

Сгенерировать код проверки целочисленного переполнения.

-CR

Проверить правильность вызова объекта (вызовы методов должны быть допустимыми).

-Cr

Сгенерировать код проверки диапазона.

-Cs xxx

Установить размер стека xxx байт.

-Ct

генерировать код проверки стека.

-CX

Создайте библиотеку со смарт-связью.

-d xxx

Определите имя символа xxx Это можно использовать для условной компиляции частей вашего кода.

-E

То же, что и -Cn.

-g

Генерировать отладочную информацию для отладки с помощью GDB

-gg

то же, что и -g.

-gd

генерировать отладочную информацию для dbx.

-gh

используйте модуль heaptrc (см. раздел о модулях руководства FPC).

-gl

используйте модуль lineinfo для информации о линии (см. раздел единиц измерения в руководстве FPC).

-gv

Генерация информации для отладки с помощью valgrind.

-gw

Создать отладочную информацию DWARF.

-O xxx

оптимизировать вывод компилятора; xxx может иметь одно из следующих значений:

g

оптимизировать размер, попытаться сгенерировать меньший код.

G

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

r

хранить определенные переменные в регистрах (экспериментальные, используйте с осторожностью).

u

неопределенные оптимизации

1

Оптимизация уровня 1 (быстрая оптимизация).

2

Оптимизация уровня 2 (-O1 плюс некоторые более медленные оптимизации).

3

Оптимизация уровня 3 (-O2 плюс -Ou).

PN

Укажите процессор: n может быть одним из

  1. Оптимизация для 386/486
  2. Оптимизация для Pentium / Pentiummmx (TM)
  3. для Pentium / Pentium. tm)

Точный эффект этих эффектов можно найти в части руководства для программистов.

-o xxx

Указывает компилятору использовать xxx в качестве имени выходного файла (исполняемого). Только с программами.

-pg

Сгенерировать код профилировщика для gprof.

-s

Указывает компилятору не вызывать ассемблер и компоновщик. Вместо этого компилятор пишет сценарий, PPAS.BAT в DOS или ppas.sh в Linux, который затем может быть выполнен для создания исполняемого файла.

-sh

Указывает компилятору сгенерировать сценарий, который можно использовать для сборки и компоновки в хост-системе, а не в целевой системе. Используйте это при кросс-компиляции.

-sr

Пропустить стадию выделения регистров в компиляторе (используйте с -ar) хост-система. Используйте это при кросс-компиляции.

-T xxx

Указывает целевую операционную систему. xxx может быть одним из следующих:

EMX

OS/2 и DOS через расширитель EMX. DOS и версия 2 расширителя DJ DELORIE.

ЛИНУКС

Линукс.

NETBSD

Netbsd.

NETWARE

Модуль Novell Netware (clib)

NETLIBC

Novell Netware module (libc)

OPENBSD

OpenBSD

OS2

OS/2 (native mode)

SunOS

Solaris SunOS

WATCOM

Расширитель WatCOM Dos

WDOSX

Расширитель WDosX Dos

WIN32

9 3 Windows 3, бит 2. 2120 90 бит

-u xxx

отменить определение символа xxx , если он определен. Это противоположно варианту -d .

-X x

Исполняемые опции. Они сообщают компилятору, какой исполняемый файл должен быть сгенерирован. параметр x может быть одним из следующих:

c

(только Linux, устарело) Связь с библиотекой C. Вам следует использовать это только тогда, когда вы начинаете портировать Free Pascal на другую операционную систему.

D

Связь с динамическими библиотеками (определяет символ FPC_LINK_DYNAMIC)

d

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

Pxxx

Начинайте имена binutils (as, ld) с xxx. Для использования при кросс-компиляции.

rxxx

Установите путь поиска библиотеки на xxx.

s

Удаление символов из исполняемого файла.

S

Ссылка со статическими библиотеками (определяет символ FPC_LINK_STATIC)

T

СТАТИЧЕСКИЙ СТАТИЧЕСКИЙ (проходы -STATICATION TO TOSKSTATIOR)

9

. Использование этой опции устанавливает символ FPC_LINK_SMART.

Параметры, касающиеся источников (языковые параметры), для получения дополнительной информации об этих параметрах см. также Руководство программиста

-M режим

Укажите языковой режим. режим может быть одним из следующих:

delphi

Режим совместимости с Delphi. Это загружает модуль objpas и включает режим поддержки ( -Sh ).

fpc

Режим по умолчанию.

gpc

Режим GNU Pascal (в данный момент ничего не делает)

macpas

Режим Mac Pascal. Это загружает модуль macpas и включает некоторые расширения Mac (в основном макросы)

objfpc

Режим Object Pascal. Это загружает модуль objpas.

tp

Режим Turbo Pascal.

-R xxx

Указывает, какой ассемблер вы используете в своих блоках кода ассемблера «asm». Здесь xxx является одним из следующих:

att

Блоки Asm содержат ассемблер AT&T.

intel

Блоки Asm содержат ассемблер Intel.

по умолчанию

Использовать ассемблер по умолчанию для выбранной платформы.

-S2

Включите расширения Delphi 2.

-Sa

Генерация кода для утверждений.

-Sc

Поддерживать операторы в стиле C, т. е. *=, +=, /= и -=.

-Sd

Пытается быть совместимым с Delphi

-Se

Компилятор останавливается после первой ошибки. Обычно компилятор пытается продолжить компиляцию после ошибки, пока не будет достигнуто 50 ошибок или не будет достигнута фатальная ошибка, а затем он останавливается. С этим переключателем компилятор остановится после первой ошибки.

-Sg

Поддержка команд label и goto.

-Sh

по умолчанию использовать антистринги.

-SIxxx

Укажите тип интерфейсов. xxx может быть одним из следующих:

COM

использовать интерфейсы COM. (все интерфейсы происходят от IUnknown)

CORBA

используют интерфейсы CORBA. (наследование не предполагается)

-Si

Поддержка стиля C++ INLINE.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *