Cтраница 1
Регистр указателя стека позволяет размещать стек LIFO в любом месте памяти. Данные могут загружаться в стек и извлекаться из стека из любых или в любые регистры центрального процессора. Стек обеспечивает фактически любой уровень вложения подпрограмм, позволяет выполнять многоуровневые прерывания и может служить для хранения и извлечения обычных данных. [1]
Поясним назначение регистра указателя стека. Так как МП могут применяться для целей управления, го их работа в любой момент времени может быть приостановлена ( режим прерывания) для получения и обработки информации от управляемых объектов. В связи с этим возникает необходимость в запоминании содержимого регистров, которое характеризуется так называемым словом состояния процессора - PSW. [2]
Примечание: Оба регистра указателя стека должны быть инициализированы непосредственно программистом после сброса. [3]
Стековая ( stack) - адресация посредством регистра указателя стека при программной реализации стека. [4]
При стековой адресации исполнительный адрес операнда находится в регистре указателя стека SP, причем после чтения операнда из стека содержимое регистра указателя стека увеличивается на два, а перед записью операнда в стек содержимое регистра указателя стека уменьшается на два. [5]
Команды условного перехода. [6] |
Операция засылки адреса возврата выполняется в два шага: сначала текущее значение регистра указателя стека уменьшается на 2, затем производится запись адреса возврата в память по адресу, указанному в регистре УС. Эти действия выполняются по команде возврата из подпрограммы и приводят к тому, что выполнение основной программы продолжается, начиная с адреса возврата. [7]
При стековой адресации исполнительный адрес операнда находится в регистре указателя стека SP, причем после чтения операнда из стека содержимое регистра указателя стека увеличивается на два, а перед записью операнда в стек содержимое регистра указателя стека уменьшается на два. [8]
При стековой адресации исполнительный адрес операнда находится в регистре указателя стека SP, причем после чтения операнда из стека содержимое регистра указателя стека увеличивается на два, а перед записью операнда в стек содержимое регистра указателя стека уменьшается на два. [9]
В нем аппаратно реализованы также команды условного перехода. Набор регистров GPR имеет 2 регистра указателя стека R6ISP), что обеспечивает работу CPU в двух режимах: ядра и пользователя. Состав чипа предусматривает выполнение в нем всех арифметических и логических операций, пересылку данных и адресов в пределах, не требующих диспетчера памяти. [10]
Глубина стека может быть значительно увеличена за счет размещения его не в самом МП, а в памяти. В этом случае в Р размещается регистр указателя стека, содержание которого определяет адрес соответствующих ячеек памяти в оперативном запоминающем устройстве. От разрядности этого адреса зависит наибольшее число уровней или глубина стека. [11]
Регистровый стек. [12] |
Регистровый стек ( рис. 8) состоит из восьми 80-разрядных регистров, используемых в качестве собственно стека и ( или) набора рабочих регистров. Адрес верхнего регистра стека, называемого текущим, хранится в регистре указателя стека ST. Указатель стека размещается в слове состояния. Адрес текущего регистра ( т.е. содержимое ST) может быть увеличен или уменьшен командами сопроцессора. [13]
Количество регистров в разных процессорах может быть от 6 - 8 до нескольких десятков. Регистры могут быть универсальными и специализированными. Специализированные регистры, которые присутствуют в большинстве процессоров, - это регистр-счетчик команд, регистр состояния ( PSW), регистр указателя стека. Остальные регистры процессора могут быть как универсальными, так и специализированными. [14]
Далее в счетчик команд из ячейки, хранящей первое слово вектора прерывания, передается начальный адрес-прерывающей программы, а из следующей ячейки второе слово вектора прерывания заносится в регистр слова состояния процессора. В новом слове состояния процессора порог-прерывания должен быть не меньше уровня приоритета принятого к обслуживанию запроса, чтобы повторный запрос от этого источника прерывания не мог прервать выполняемую прерывающую программу. Управление переходит к программе обработки прерывания, заданной вектором прерывания. Если эта программа использует общие регистры, то она начинается с передачи их содержимого в стековую память с помощью команд передачи с автодекрементной прямой адресации по регистру указателя стека. [15]