ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.07.2024
Просмотров: 96
Скачиваний: 0
-30 -
хпде я - деоятичный номер данного оператора DEBUG В ФОРТРАН-программе.
2.6Л.4, Автокод в обращение к стандартным программам.
В ФОРТРАК-ирограшо могут быть записаны в команды на автокоде (языке ассемблера). Применяемая при этом сим
волики принадлежит Б.Б.Лена к напоминает используемую в £b'j. Команда» как и любой другой оператор, может быть снаб-
язва меткой.
Команда имеет вид:
<нод> , <адрес? , <адресэ- , <адрес > ?
пли
0;
ада (для обращения к стандартным программам в системе ИС-2М):
<код> - восьмеричное число К в диапазоне 04 К .£777 (нули
в начале чиода гожно не писать); |
|
|
|
|
(адрес? аожет быть записан в виде: |
|
<адресе> записы |
||
а) абсолютного адреса ячейки А - тогда в |
||||
вается восьмеричное число в диапазоне 0 ^ А ^ |
7777 (ну |
|||
ли в начале числа можно не писать); |
<адресе^ |
записы- ' |
||
б) адрес некоторой константы - тогда в |
||||
вьется эта константа. |
|
|
|
|
Консч апта |
|
|
|
|
•^*MS . « ^ / 3 , Х & . « А Р г У 1 & . |
о 1 9 |
р 3 Г ^ г |
|
|
(oL^fi, V} 8 |
- восьмеричные цифры) |
|
||
записывается в виде: |
( ( |
|
|
|
Если какой-либо адрес или код в константе отсутствует, его
можно пе писать; если какой-либо адрес имеет вид, например,
7777' то он может сокращенно записываться в виде:
П<
Константа П означает полное слово, т.е. 7.77.7777.7777.7777
- 31 -
Адреса в константе можно писать в любом порядке. Примеры.
Константа
777.7777. 0.0001
записывается в виде:
777Kn'l'"
или
777К I ' " П*
Константа
0.00.0002.0002.С003
записывается в виде:'
П( 1» 'jtt*
ИЛИ
ит.д.
Константа
0.00.7777.0001.7777
записывается в виде:
п' I " П"'
ИЛИ
П* Псее l "
" т.д.
в) адреса простой переменной А - тогда в <адресе> записы
вается идентификатор этой простой переменной;
г) адреса элемента массива с числовым индексом - тогда в <апреое> записывается соответствующая переменная с индек сом. Запрещается использовать двумерный массив с переменной
структурой (см. 2.6.2.1.3.4); такой массив может быть ис пользован, только если его индекс состоит из одного индек
сного выражения, т.е. массив используется как одномерный. Запрещается также использовать массив, расположенный в ди намической памяти (см. 2.6.2.1.3.6.). Если используется
мжсив из Ы03У-1, то программист должен сам принять меры по перекоммутации кубов, т.е. написать команды с кодом "57";
д) метки - тогда <адрес> имеет вид:
;га,
где m -метка. Например, переход к оператору с меткой 123
запишется в виде команды:
16,0,:123.0;' ^ е) ссылки на какую-либо команду в окрестности текущей ко
манды или на саму текущую команду - тогда < адрес> имеет вид:
35 + А,
или
а - А,
ЕЛИ
к,
где А - десятичное целое число, А^ 15;
хобозначает ссылку на текущую команду;
35 + А - ссижу на команду, находящуюся по адресу А, если за нулевой адрес принять адрес текущей
команды; к - А - ссылку на команду, находящуюся по адресу (-А),
ее та за нулевой адрес принять адрес текущей
команды.
Пример.
Очистка массиве А длиной IOOJQ элементов может быть записана так:
52,0,0,0;
100,0,0,А(1);
112,143,к - 1,0001;
ж) адреса десятичного числа - тогда <адрес), имеет вид:
<А> ,
где А - записанное обычным образом (см.2.2.) десятичное
число.
.ПримерГруппа команд в автокоде:
00, П* I * " |
|
, |
0, 1000; |
||
1: 13,1000, П' |
I |
' " |
,1001; |
||
13,к - |
I , |
I ' |
|
1<" |
,«-!{ |
33, х - 2, 1100* ,0,; |
|
||||
36, 05 |
: 1 , |
0; |
|
|
|
-33 -
50,2500, 0,1100; 70,1000, 0,0;
осуществляет вывод на узкую печать массива в 100 команд:
000 777700000001
ООО 777600000002 .
000 777500000003
000 7677000Q0I0I
Другие возможности автокода
Команда:
0; эквивалентна команде:
00, 0, 0, 0;
Обращение к стандартной программе следует осуществлять с помощью операторов:
(JJ - номер стандартной программы - восьмеричное число),
где ЯР ~ признак обращения к стандартной программе -
реализуется так же, как и команда 16,к + 1,7501, 7610;
р, A, N, В; - информационная строка обращения к конкрет
ной СП (таких строк может быть несколько). Информационные
строки описаны в инструкциях к соответствующим СП и запи
сываются в ФОРТРАН-программе по обычным правилам записи
команд в автокоде.
Замечание I . Требование писать обращение к стан дартной программе с использованием оператора
SP;
вызвано тем, что СП с номерами, находящимися в определен
ном диапазоне, вводятся с перфокарт, и компилятор, учиты вая это, специально приспосабливает рабочую программу для ввода соответствующего количества СП с перфокарт.Этот ввод осуществляется специальной стандартной программой РИС
|
г- 34 - |
(см. $.&• |
), обращение к которой автоматически |
формируется компилятором и располагается в начале рабо чей программы (см. также 3.).
Замечание 2. Каждая команда автокода всегда реа
лизуется в виде одной команды в рабочей программе. Замечание 3. Если непосредственно перед какой-ли
бо командой автокода находится оператор присваивания, использующий массив из ШЗУ-I, то в этой команде не долж
на встречаться конструкция вида я или к - Л.
2.6.2. Нешполняемые операторы.
Имеются следующие типы невыполняемых операторов:
-оператора описаний;
- |
оператор ЕфЩ'Д; |
|
- |
оператор ЕИР; |
|
-оператор С01ШЕНТ; |
. у1травляюшне процессом компиляции; |
|
- операторы рьдйы |
-операторы, определяющие подпрограммы,
2.6.2.1.Операторы оьлсалий.
Имеются следующие типы операторов описаний:
-описания простых переменных;
-описания массивов;
- описание |
SOinVAhSSCB; |
- описание |
еттЕШАЬ. |
2.6.2.I.I. Локализация.
2 . 6 . 2 . I . I . I . Простые переменные и массивы могут быть ло
кальными и глобальными.
2.6.2.1.1.1.1.Локальной называется переменная (простая или с индексом), областью действия которой является либо основная программа без подпрограмм, либо только та подпро грамма, в которой переменная явно или неявно описана.
2.6.2.1.1.1.2.Глобальной называется переменная, областью
действия которой является программа и все ее подщюграгд.ш.
-35 -
2.G.2.I.I.2.I. Локалыше переменные явно описываются в на чале соответствующей подпрограммы или основной программы.
2.6.2.1.1.2.2.Локальные простые переменные могут явно не
описываться. IТх первое появление в тексте подпрограммы
или основной программы является неявным описанием этих пе
ременных.
2.6.2.1.1.2.3.Глобальные переменные явно описываются в
начале ФОРТРАК-програмш (непосредственно вслед за 0РД10Н, если они есть).
2.6.2.1.2. Описание простых переменных.
Описание простых переменных имеет вид:
REAL А , В , С , . . . |
А,В,С,... - список идентификаторов простых переменных.
При описании простых переменных мо;кно указывать их реальные (абсолютные) адреса в рабочей программе. Для этого вслед
за соответствующим идентификатором в квадратных скобках указывается требуемый восьмеричный адрес.
При указании абсолютных адресов следует учитывать распределение памяти, осуществляемое компилятором для ра
бочей программы (см. |
3. |
)• |
|
Примеры. |
|
|
|
REAL ALFA, BETA [7] , С| |
|
||
2.6.2.1.3. Описание массивов. |
|
||
2.6.2.1.3.I. Описание массивов имеет вид: |
|
||
REAL . . . . |
А(Ю, |
. . . . В(К,Ь), |
С(М), |
А,В,С,... - список идентификаторов одноили двумерных мас сивов (перечисленных в любом порядке);
N,K,L,M - верхние границы соответствующих индексных выраже
ний (см. 2.3.2.). Нижняя граница каждого индексного выраже
ния считается равной единице.
Верхняя граница индексного выражения должна быть це лым числом, большим или равным единице.
-36 -
Однако, если какой-гснбо массив является формальным пара
метром (см, 2,6.2. СЛ.) (и только в этом ~лучае!), верхь кяя граница индексного выражения может быть не только
числом, но и идентификатором простой переменной. В послед
нем случае упомянутая простая переменная также должна быть формальным параметров, т.е. содержаться в списке фор мальных параметров рассматриваемой подпрограммы. К момен
ту вызова этой подпрограммы и замены формальных парамет
ров на соответствующие фактические параметры (см. 2.6.3.) значение фактического параметра, соответствующего верхней
границе индексного выражения, должно быть целым строго по~ ложительным числом. Замена переменной верхней границы мас
сива - формального параметра па соответствующий фактичес кий параметр при обращении к подпрограмме происходит толь
ко для второго индексного выражения двумерного массива
(т.е. количества столбцов матрицы), так как при обращении
к элементу шсс за имеет смысл верхняя граница только ко личества столбцов матрицы (другие вер'хние границы массивов - формальных параметров могут быть любыми натуральными числами иди простыми п ременными).
2.6.2.1.3.2. При описании массивов можно указывать их ре альные (абсолютные) адреса в рабочей программе. Для этого вслед за правой круглой скобкой в описании соответствующе го sv.H в квадратных скобках указывается требуемый йиоьмсур.чш-й адрес (адрес первого элемента). При указании аЗсолитгяъ'х адресов следует учитывать распределение памяти,
осуществляемое компилятором для рабочей ггрограммы (см. 3.)
Цржер.
REAL , . . , А(10) [2dQ , . . . ;
2.6.1.3.3, Компилятор, как правило, размещает все масси вы в нулевом кубе МОЗУ. Однако, при желании массивы можно
разместить и в первом кубе ЮЗУ. Для этого вслед за правой круглой скобкой (если отсутствует квадратная) или за пра вой квадратной скобкой в описании соответствующего масси
ва В' "углозых" скобках указывается требуемый номер ггба ЫОЗУ (т.е. <1> ) .
- 37 -
Пример.
REAL |
А(10) < 1 > |
В(20) ЦЗОО] < 1 > , |
2.6.2.1.3.4. Для работы с двумерными массивами переменной структуры (матрицами с переменным количеством слов в стро ке) введено описание (идея которого принадлежит Б.Б.Леви):
REAL ..., A(Ot C0LS N/ot/),...;
где А,- идентификатор массива;
N - идентификатор переменной, указывающей изменяемое обычным образом в программе количество столбцов (C0LS); обнатуральное десятичное число, указывающее макси
мальное количество элементов массива А.
До первого присвоения значения переменной N к эле ментам матрицы А можно обращаться только как к элементам одномерного массива (см. 2.3.2.4.). После того, как пере
менной II будет присвоено значение |
, матрица А будет |
рассматриваться как матрица, имеющая |
столбцов, т.е. |
адрес элемента А( Ы. , |Ь ) будет вычисляться по формуле |
С А ] +(П1 -1)*ОС + ^ -1,
где[А]- адрес элемента А(1,1) .
Как видно из этой формулы, количество строк матрицы не играет роли. Значение переменной N может изменяться произвольным образом. Однако, при обращении к элементу массива А как элементу двумерной матрицы переменная и должна иметь натуральное значение n g (возможно, не равное п1 ) , и тогда матрица А будет рассматриваться уже как
столбцов, т.е. адрес элемента к(о(. , J5) будет вычисляться по формуле СА Ц +(п2-1)*сС + ]3 -1.
Пример использования такой матрицы указан на рис. 1. Пример.
REAL .... 3KO.C0LS М / 4 0 0 / ) ,
2.6.2,1.3.5.1. Имеется возможность работать с динамически ми массивами. Динамический массив - это массив, который размещается на магнитном барабане и имеет страничную (по 200g кодов + КС) структуру. При работе с динамическими массивами отводится (компилятором) поле в МОЗУ дня разме-