Файл: Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.07.2024

Просмотров: 102

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

-104 -

ЧИСЛО вависят от того, является ли он параметром внутрен­

него или внешнего цикла.

Параметр внутреннего цикла превращается (програм­ мным образом) в нормализованное число л засылается ь спе­

циальную ячейку (для чего один раз для каждого арифмети­ ческого выражения, в котором он встречается, создается

вспомогательная простая переменная, см. 5.2,1.3.1.). Па­

раметр же внешнего цикла превращается в нормализованное число, если это нужно, лишь однажды для всего внутреннего

цикла, причем такое превращение происходит до начала вы­ полнения внутреннего цикла. Именно, при входе г.о ьиутрен-

ний цикл создается вспомогательная метка (см. 5.2.2.).ко-1 торая вначале лишь регистрируется, но не описывается. Ес­

ли при программировании внутреннего цикла встречается не­

обходимость в превращении параметра -одного из внешних цикла в ворматазованное число, то проверяется, была ли у :е опи­

сана соответствующая этому внешнему циклу вспомогательная метка. Если нет, то создаются (четыре) "вкрапленные" команды превращения указанного параметра цикла в нормали­ зованное число (из единиц второго адреса), описывается соответствующая метка как помечающая первую из этих "вкрапленных" команд, и выдается адрес ячейки, в которой

размещается данное .число, для этого, кроме того, создает­

ся и вспомогательная простая переменная. Если же рассмат­ риваемая вспомогательная метка уже описана, то видается лишь адрес соответствующей ячейки. В дальнейшем третий

просмотр проверяет, описана ли указанная вспомогательная

?летка, и если это так, то команда начала цикла

("52" или

"72")

заменяется на команду "16" обращения к соответствую­

щему блоку "вкрапленных" команд. Первая команда такого

блока совпадает с командой начала цикла "52" или "72".

 

При выходе из цикла с помощью оператора

с;0 Т0

или арифметического IP параметр внутреннего цикла пе­

реводится из регистра адреса в соответствующую ячейку

(где

располагается' значение переменной с таким идентифи-


- 105 -

катором) в единицах второго адреса. При &том параметры всех внешних циклов уже находятся в своих ячейках также в

единицах второго адреса. Поэтому, чтобы в данном случае

вне цикла обратиться к его параметру, следует использо­ вать встроенную функцию FL0AT ( С М . 2.6.3.3.), которая

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

вание происходит автоматически (см.выше).

5.2.5. Обработка условных операторов

Известно, что в арифметическом условном операторе

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

ответствующую оптишзацию.

Так, например, конструкция:

IF (А) 5,5,2 ;

5 : . . .

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

0.02. О. а. 1

0.36. О. :2. О

В логическом условном операторе часто вслед за ус­

ловием записывается безусловный оператор G0 Т0 , асамо условие состоит из сравнения значений простой переменкой и числа или двух простых переменных. В этих случаях также происходит соответствующая оптимизация.

Так, например; оператор:

IF (J.NE.O) G0 Т0 1 ;

программируется в виде;

0.15. j . Оо О

0.70. О. :1.0

-IQ6 -

6.2.6.Обработка подпрограмм

Каждая подпрограмма пользователя в рабочей программе начи­

нается о команд (обозначения - см. СбЗ ):

~в г 4.52. РА*. О. РА"

0.16. О . а1. О

PA"s//0„52.

О .

РА. °1 выход из подпрограммы

«*_ .,#0.00.

О .

0 . 0 )

ais <первая рабочая команда подпрограммы >

Оператор RETURN

этой подпрограммы реализуется в виде:

0.16.о. РЛ". о

Обращение к такой подпрограмме (без учета замены парамет­ ров) происходит в виде:

0,16, М .

ЁГ . — —

Ы : . . .

Перед обращением к подпрограмме происходит:

-вычисление и пересылка значений фактических параметров,

соответствующее формальным параметрам - простым перемен­

ным, в нужные ячейки;

-пересылка в соответствующие ячейки (резервируемые при

описании подпрограммы) различных характеристик массивовфактических параметров (адреса начала, длины, количества столбцов и некоторых других);

-пересылка в соответствующие ячейки (также резервируемые при описании подпрограммы) некоторых характеристик факти­ ческих параметров - подпрограмм.

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

стыми переменными - не параметрами цикла.

Внутри подпрограммы обработка элемента массива -

формального параметра происходит путем формирования команд:

.реализующих обращение к элементу соответствующего ему мас­

сива - фактического параметра)" с помощью характеристик


- 107 -

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

характеристики массива - формального параметра и соответ­ ствующего ему фактического параметра должны оыть сходными

(ом. 2.6.3.).

Обработка обращения к подпрограммеформальному па­

раметру происходит также с учетом характеристик соответст­ вующей подпрограммы - фактического параметра, пересланных

ранее, при обращении к вызывающей подпрограмме. Поэтому необходимо, чтобы все подпрограммы - фактические параметры,

соответствующие одной и той же подпрограмме - формальному

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

подпрограммы должны быть указаны в операторе EXTJSBKAL (см. также 2.6.2.1.5. и 2.6.3.). Таким образом, программи­

рование обращения к подпрограмме - формальному параметру

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

которые уточняют, к какой именно подпрограмме из числа воз­

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

Обращение к встроенным функциям либо реализуется в виде вызова соответствующих стандартных программ (для си­

нуса и косинуса- СП-ОООб, .для тангенса - СП-OQII, для арк­ тангенса - СП-0012, для экспоненты - СП-0003 и для натураль­

ного логарифма - -П-0004), либо программируется в виде од­ ной или нескольких команд непосредственно в рабочей програм­ ме (для всех остальных встроенных функций).

Замечание: СП-0001 реализует X**Y "Р11 V нецелом или отрицательном.

Поскольку фактический параметр может быть арифмети­

ческим выражением, в котором, в свою очередь, могут ветре-

- 108 -

титься обращения к функциям,- блок обработки подпрограмм

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

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

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

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

ражений, и поэтому глубина рекурсии здесь будет меньше,

оставаясь при этом вполне достаточной для практических целей.

5,2,7., Печать ошибок

Печать ошибок осуществляется блоком печати ошибок, исходной информацией для которого является номер ошибки, номер оператора, в котором обнаружена ошибка, место ФОРТРАН-програмш, куда надо перейти после печати ошибки, и, возможно, идентификатор неверно употребляемой величины

Е Л И номер неверно записанного фактического параметра. Блок печати ошибок постоянно находится на магнитном

барабане и вызывается в МОЗУ только при обнаружении ошиб­ ки. Этот блок по номеру ошибки находит и считывает с маг­ нитного барабана ее текст и печатает на АЦПУ информацию об ошибке.

В целом ряде ошибок номер имеет вид oC't. ^ , Это означает, что имеется несколько ошибок, являющихся разно­

видностями "укрупненной" ошибки с номером oi. А . Тогда на

АЦПУ печатается текст ошибки с номером об 4 , а уточняю­ щую информацию о конкретной разновидности ошибки пользова­

тель может получить в таблице ошибок (см. 40 по ее "полно­ меру"^ . Такая отруктура объясняется ограниченностью места (на магнитном барабане) для текстов ошибок и стрем­

лением предоставить пользователю по возможности наиболее подробную информацию об ошибках.


- 109 -

После обнаружения и печати ошибки восстанавливает­ ся содержимое МОЗУ, куда считывалоя блок печати ошибок,

после чего происходит переход на обработку очередного

участка Ф0РТ2АН-программы. Таким участком, как правило, является начало следующего за ошибочным оператора. При об­

работке описаний, как правило, происходит переход к следу­ ющему элементу описания, а в некоторых других случаях -

продолжается текущая обработка. Иногда (например, при не­ верном заголовке подпрограммы) происходит останов, т.е.

дальнейшая работа компилятора (поиск ошибок) прекращается.

В других случаях после печати ошибки происходит дальней­ шая обработка ФОРТРАН-программы. При обнаружении хотя бы

одной ошибки третий просмотр не работаетt и тем самым ра­ бота компилятора тогда сводится к выдаче диагностических

сообщений об ошибках.

5.3. Третий просмотр

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

тельной) рабочей программы. Полученная рабочая щхлрамма

размещается в МОЗУ-0 ( и поэтому третий просмотр работает

в МОЗ.У-1). После создания всех команд рабочей программы

вслед за этими командами размещаются созданные вторым про­

смотром константы и числа (см. 5.2.1.3.3.). Затем, если они есть, располагаются созданные уже ранее третьим просмот­ ром "добавочные" команда (см, 5 . 2 . I . I . 5 . ) .

Перед рабочей программой третий просмотр располага­ ет так называемую программу старта, функции которой описа­ ны а 3.

Кроме этого, третий просмотр осуществляет обработ­ ку дополнительных возможностей (операторов gPTlffN ,

им, 2.8.2.5.), управляющих процессом компиляции, точнее,


- н о -

выдачи ее результатов.

После третьего просмотра в МОЗУ-0 с ячейки 0010 располагается готовая к работе рабочая программа (совмест­

но с программой старта), В таком виде рабочая программа,

если это требуется, выдается на АЦПУ и/или перфорацию. В конце работы компилятора происходит останов

0.77,777?. 0. 7777

вслед за которым, по ПУСКу, начинается работа (программы

старта и) рабочей программ.

6, Ввод МИФ в эксплуатацию.

6.1. Запись компилятора с ПК на МБ-i-

или, Ш~1

6.1.1. Цель.

Программа записывает массивы компилятора МИФ с пер­ фокарт на магнитный барабан или магнитную ленту.

6.1.2. Работа программы.

Компилятор состоит из пяти массивов перфокарт. Опи­ сываемая программа вводит с контролем эти массивы и записы­ вает их на указанный программистом МБ или МЛ.

6.1.3. -Подготовка программы к работе.

Для работы программы нужно ей указать вид внешней

памяти (МБ или МЛ), номер МБ или лентопротяжного механизма,

а также, в случае МБ, границы участка МБ, на котором раз­ решена запись МИФ.

Эти величины указываются в приводимой ниже первой

карте программы:

- 111 -

0001 : 0.16.0000. 0010. 0000

2 » 0.00.0000. i . 0000

3 ; 7.77.7777.7777-1.7777

4 j o.oo.ooo/,. b v 0000

5 t 7.77.7777-^.7777-^.7777

6 I o.oo.oooj52 . b 2 , 0000

7 J 7.77.77?7-f2.?777-b2.7777

0010

t 0.52.0000.

1000.

0000 .

1

: 1.00.0000.

0000,

0000

2

J 1.12.1015.

0011.

0001

3

: 0.00.0000.

0000.

0750

4

t 0.00.0000.

0000.

0751

Здесь:

i- номер МБ или лентопротяжки, на которую за­

писывается МИФ;

р^Ь^

- начало участка МБ, на котором разрешена за­

 

пись МИФ;

|32Ъ2

- конец участка МБ, на котором разрешена за-

Jпись МИФ.

Вслучае МЛ в ячейках 0004+ 0007 пишутся нули.

Строки 0003, 0005 и 0007 заполняются для того, чтобы при изменении указанных параметров контрольная сумма програм­ мы не менялась.

6.1.4. Информационная карта и ее заполнение.

На МБ или МЛ записываются пять массивов компилятора, а также специальная служебная программа (администраторj

см. 6.2.). Массивы компилятора вводятся с ПК, а администра­ тор является составной частью описываемой программы и поэ­ тому отдельно с Ы не вводится.

Информация о размещении упомянутых массивов и адми­ нистратора указывается на (Специальной (инфорглационной) карте.