Адрес - область - сохранение - Большая Энциклопедия Нефти и Газа, статья, страница 3
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) Законы Мерфи (еще...)

Адрес - область - сохранение

Cтраница 3


Первые три слова этой области заполняются по макрокоманде SYNADAF следующим образом: 1-регистр параметров PARM2, 2 - регистр параметров PARM1, 3 - адрес старой области сохранения.  [31]

Регистры ссязей ( см. 2.6) - регистры, которые используются для связей между модулями: регистры 0 и 1-для передачи параметров, регистр 1-для передачи адреса списка параметрои; регистр 13 - адрес области сохранения; регистр 14-адрес возврата; регистр 15-содержит адрес точки входа при передаче управления вызываемому модулю и код возврата при возврате управления вызывающему модулю.  [32]

Напомним, что при обращении в подпрограмме необходимо загрузить в регистр 15 адрес точки входа в подпрограмму, в регистр 14 адрес точки возврата, а в регистр 1 - адрес таблицы адресов параметров. Адрес области сохранения для подпрограмм обычно загружается в регистр 13 в начале программы. Опыт программирования показывает, что таблицу адресов параметров удобнее записывать не в отдельной области памяти, а вместе с командами обращения к подпрограмме: программа становится нагляднее.  [33]

Область сохранения размером 18 слов резервируется в каждой программной единице. Во втором слове сохраняется адрес области сохранения той программной единицы, которая вызвала данную программную единицу. В третье слово помещается адрес области сохранения вызываемой программы. Заполнение области сохранения программы производится как вызывающей, так и вызываемой программами.  [34]

В случае успешного выполнения макрокоманды SYNADRLS освобождаются буфер сообщения и область сохранения, построенные по макрокоманде SYNADAF. Управляющая программа загружает регистр 13 адресом предшествующей области сохранения и устанавливает нуль в третьем слове этой области сохранения. В регистр 0 помещается нулевой код возврата ( 00), означающий успешное завершение.  [35]

Вызываемый модуль производит перезапись содержимого регистров в слова 4 - 18 области сохранения вызывающего модуля и приступает к исполнению. После исполнения вызываемый модуль загружает в регистр 13 адрес области сохранения вызывающего модуля ( второе слово), а в регистры 14, 15, 0 - 12 переписывав. При написании программы на языке Ассемблера эти действия должен предусмотреть программист. Если же программа пишется на языке высокого уровня, их выполняет компилятор.  [36]

Память, запятая модулем, считается свободной сразу после выдачи макрокоманды. Перед выдачей макрокоманды XCTL необходимо восстановить регистр 13, содержащий адрес старой области сохранения, чтобы затем был восстановлен регистр 14, который содержит возврат в программу более высокого уровня.  [37]

Макрокоманда SYNADARLS освобождает области основной памяти, запрошенные макрокомандой SYNADAF для сохранения регистров, буфера сообщения и области сохранения параметров. При выдаче макрокоманды SYNADARLS регистр 13 должен содержать обеспечиваемый макрокомандой SYNADAF адрес области сохранения регистров.  [38]

Далее следуют предложения, реализующие функцию программы. Заключительные команды: команда L восстанавливает в ОР ( 13) адрес области сохранения вызывающей программы; команда LM использует этот адрес для восстановления значений в остальных общих регистрах. Команда BCR возвращает управление вызывающей программе.  [39]

Программы пользователя в ПУС могут быть открытыми и закрытыми. Регистр 12 является базовым для открытой программы, в регистре 13 содержится адрес области сохранения.  [40]

В области сохранения вызывающей программы запоминается содержимое общих регистров вызывающей программы и адрес области сохранения вызываемой программы. Если вызывающая программа является также и вызываемой, то в ее области сохранения запоминается адрес области сохранения программы, которая ее вызвала.  [41]

Всякий раз, когда управление передается подпрограмме, вызывающая программа должна в соответствии с принятыми соглашениями обеспечить для вызываемой программы область сохранения, в которую вызываемая программа будет записывать содержимое общих регистров. В регистр 13 - регистр области сохранения - до начала выполнения вызывающей последовательности должен быть загружен адрес области сохранения. Области сохранения связываются в цепочку по мере передачи управления программам более низкого уровня.  [42]

В простейшем случае, когда в процессе обработки прерывания от второго канала других прерываний не происходит, программа, информация о которой записана в области сохранения, снова получает управление после выполнения команды JMP STACK. Эта команда переписывает информацию из области сохранения на регистры. Адрес области сохранения известен - он находится в SPR. После переноса сохраненной информации на регистры процессора выполнение прерванной программы возобновляется с нужной точки.  [43]

Первое слово программист может использовать по своему усмотрению. Если вызываемая программа в свою очередь не вызывает другую программу, то слова 2 и 3 могут и не понадобиться. Слово 2 содержит адрес последней используемой области сохранения. Слово 3 содержит адрес следующей области сохранения, которая будет выделена в случае необходимости. Макрокоманда SAVE порождает команду STM, запоминающую в соответствующих словах указанные в макрокоманде регистры.  [44]



Страницы:      1    2    3