Цикл в цикле
Для формирования команды выхода из подпрограммы в индексный регистр может быть заслан адрес команды входа в подпрограмму, который затем используется для модификации команды выхода с подпрограммы.
В случае обращения к подпрограмме из подпрограммы одного индексного регистра уже недостаточно или же в программе должны быть команды, осуществляющие пересылку содержимого индексного регистра в рабочую ячейку и т. п. Если последовательность подчиненных друг другу подпрограмм превышает две, а такой процесс пересылки содержимого регистра нежелателен, то число индексных регистров, необходимое для формирования всех выходных команд, равно значению старшего порядка подпрограммы.
Для изменения команд, выполняющих операции вида (переадресация) с указанным диапазоном изменения опять-таки целесообразно использовать индексный регистр. Однако если в программе имеется так называемый «цикл в цикле» (как это имеет место, например, в простейших случаях выполнения операций над матрицами), то требуется более чем один индексный регистр, либо в противном случае нужны гибкие и эффективные средства для обмена содержимого регистра и рабочих ячеек. Подобно изменению команд выхода с подпрограмм, если встречается большее число циклов, вложенных друг в друга, что возможно во многих вычислительных процессах, то соответственно должно возрастать и необходимое число индексных регистров.
Изменения адресов первого типа, связанные с подготовкой подпрограммы, могут быть выполнены различными способами, каждый из которых требует наличия специального признака для каждого адреса внутри подпрограмм, который должен быть изменен (или наоборот — для тех, которые остаются без изменений). На машине Дататрон-205 и машине ПЕРМ, например, можно использовать индексный регистр для записи первого адреса подпрограммы или использовать для этой цели один из свободных регистров арифметического устройства.
Источник: delete-it