Cтраница 4
Область сохранения создается вызывающей подпрограммой, а вызываемая подпрограмма обеспечивает сохранение в ней содержимого регистров и восстановление их при возврате управления вызвавшей подпрограмме. Если вызываемая подпрограмма, в свою очередь, тоже вызывает подпрограмму, то и в ней должна быть создана своя область сохранения. Поэтому может быть создано большое число таких областей сохранения. [46]
Степенью возврата управления будем называть число модулей, размещенных в цепочке активаций между модулями, участвующими в операции возврата управления: возврат управления непосредственному предшественнику имеет степень возврата, равную нулю. [47]
Эти вызовы производят не только подготовку ячеек управляющих вводом-выводом, но также установку бита, разрешающего прерывания от устройства, и затем немедленный возврат управления программе пользователя. Дальнейшие действия нам знакомы: программа может продолжить свою работу, а устройство, когда оно будет готово, прервет ее. [48]
Вызываемая программа должна начинаться с команд, запоминающих состояние общих регистров в области сохранения, переданной вызываемой программой, а перед возвратом управления - восстановить эти регистры. Для запоминания и восстановления регистров в системе предусмотрены специальные макрокоманды. [49]
Информация, находящаяся в регистрах вызывающего модуля при вызове, должна быть сохранена на период выполнения вызываемого модуля и восстановлена при возврате управления в вызывающий модуль. Сохранение регистров может осуществлять как вызывающий, так и вызываемый модуль, однако принятое соглашение должно соблюдаться при всех вызовах модулей. [50]