Cтраница 3
Существует оператор отмены базовых регистров, который отличается от описанного оператора тем, что вместо liUSINGH тело третьего элемента содержит слово IIDROPH, а в теле пятого элемента содержится от 1 до 16 абсолютных символических адресов. Этот оператор показывает, что в последующих действующих операторах регистры с заданными в нем символическими адресами не будут использоваться как регистры базы. [31]
Задавая новое содержимое базового регистра, можно изменять расположение данных и программ в оперативной памяти машины. Кроме этого, широко применяется индексация, использующая другую адресную компоненту - индекс. Индекс изменяется на фиксированную величину при выполнении определенных команд. Индексация обеспечивает многократное повторение участков программы до тех пор, пока не будет достигнуто опреде-ленное ( допустим, нулевое) значение индекса. [32]
Схема каскадирования КПДП. [33] |
При автоинициализации содержимое базовых регистров BAR и WCR загружается в регистры текущих значений CAR и CWR. Разряды маски при этом не меняются. После автоинициализации контроллер готов к работе и возобновляет действие с приходом очередного сигнала DREQ. Для автоинициализации обоих каналов в режиме память - память регистры циклов ПДП CWR должны программироваться идентично. [34]
Базовый адрес в базовом регистре устанавливается операционной системой во время выполнения программы и а зависимости от конкретной ситуации распределения памяти ОС может иметь любое значение в пределах адресов памяти данной ЭВМ. В машинном формате команд находится не значение базового адреса, а номер базового регистра, в котором этот адрес находится. Одним из основных назначений базового адреса является, как было сказано выше, обеспечение отсчета адресов памяти от базового значения в пределах базируемой программной секции. Базовый адрес является основной составляющей всех исполнительных адресов памяти. Необходимо обратить внимание на другое назначение общих регистров bt, bt и хг, когда они используются программистами для хранения в них адресов, с помощью которых организуются перемещения программ и массивов данных. [35]
Базовый адрес в базовом регистре устанавливается операционной системой во время выполнения программы и в зависимости от конкретной ситуации распределения памяти ОС может иметь любое значение в пределах адресов памяти данной ЭВМ. В машинном формате команд находится не значение базового адреса, а номер базового регистра, в котором этот адрес находится. Одним из основных назначений базового адреса является, как было сказано выше, обеспечение отсчета адресов памяти от базового значения в пределах базируемой программной секции. Базовый адрес является основной составляющей всех исполнительных адресов памяти. Необходимо обратить внимание на другое назначение общих регистров Ь, Ь2 и Хц, когда они используются программистами для хранения в них адресов, с помощью которых организуются перемещения программ и массивов данных. [36]
В секции CSECT2 загружать базовый регистр уже не яадо. [37]
Загрузка базового адреса в базовый регистр обычно делается из самого программного модуля. Так как в процессоре выборка команд происходит по содержимому счетчика команд, то яосле получения программным модулем управления на счетчике команд будет адрес первой команды модуля. Этот адрес и может быть использован как базовый. Загрузку базового адреса удобно делать с помощью команды вызова подпрограммы, запоминающей содержимое счетчика команд в одном из регистров процессора. [38]
Задание адреса с помощью базового регистра и смещения имеет два преимущества по сравнению с непосредственным указанием его в команде. Во-вторых, обеспечивается независимость программы от ее положения в памяти. Действительно, изменяя содержимое базового регистра ( базовый адрес), можно загружать программу и данные в любую область памяти без дополнительной переработки программы. Содержимое регистра индекса позволяет изменять адреса операндов в процессе выполнения программы и не влияет на начальную загрузку. [39]
Модульная адресация с использованием базового регистра ( Вп) и модульного регистра ( Mj), позволяет программисту размещать модульный буфер по любому адресу. Начальный адрес буфера выравнивать в большинстве архитектур не требуется. [40]
При написании команд загрузки базовых регистров необходимо следить за тем, чтобы неявные адреса операндов команд загрузки L или LA могли бы быть базированы регистрами, определенными и загруженными ранее. [41]
Задание адреса с помощью базового регистра и смещения имеет два преимущества по сравнению с непосредственным указанием его в команде. Во-вторых, обеспечивается независимость программы от ее положения в памяти. Действительно, изменяя содержимое базового регистра ( базовый адрес), можно загружать программу и данные в любую область памяти без дополнительной переработки программы. Содержимое регистра индекса позволяет изменять адреса операндов в процессе выполнения программы и не влияет на начальную загрузку. [42]
Предложение USING ( назначение базового регистра) сообщает Ассемблеру, какие общие регистры могут использоваться как базовые и какие значения должны находиться в этих регистрах во время выполнения программы. [43]
Существует несколько способов назначения базовых регистров. Если программист имеет возможность оценить объем объектных кодов, вырабатываемых предложениями программы, то он может назначать базовые регистры по мере надобности в процессе кодирования программы. Это может привести к недостаточно эффективному использованию регистров, потому что почти невозможно определить точное место внутри программы, где окажется необходимым назначить новый базовый регистр. Наиболее удобным способом назначения базовых регистров является указание цепочки базовых регистров в начале проблемной программы. Грубая оценка объема программы - это все, что необходимо знать для инициализации нескольких базовых регистров в этой точке программы. Они назначаются таким образом, что каждые 4096 байтов, связанных с отдельным базовым регистром, присоединяются к следующим 4096 байтам. Применение этого метода описано в разделе Инициализация программы. Так как назначение базовых регистров производится в одной точке программы, то этот метод позволяет без труда осуществлять введение дополнительных или удаление базовых регистров. [44]
Пример распределения памяти при использовании базовых регистров. [45] |