Cтраница 3
Такую блочную структуру очень удобно реализовывать в рамках стековой системы: блок рассматривается как процедура без параметров, и при входе в блок регистры стека, непосредственно следующие за связью, отводятся для переменных, описанных в начале блока. Таким образом, аналогично тому как для процедуры i - й аргумент находится в ячейке L - i, точно так же 1-я по счету описанная в блоке переменная находится в ячейке L - - / При этом легко решается проблема путаницы имен, возникающая при повторном описании переменной с таким же именем, как у описанной ранее переменной. Область памяти, соответствующая локальным переменным какого-то блока, возвращается системе при выходе из этого блока. [31]
В этом нетрудно убедиться с помощью таблицы, в последовательных столбцах которой указаны адреса, команды, коды операций, а также содержимое регистров стека после выполнения каждой команды. [32]
Такую блочную структуру очень удобно реализовывать в рамках стековой системы: блок рассматривается к к процедура без параметров, и при входе в блок регистры стека, непосредственно следующие за связью, отводятся для переменных, описанных в начале блока. Таким образом, аналогично тому как для процедуры ьй аргумент находится в ячейке L - i, точно так же i-я по счету описанная в блоке переменная находится в ячейке L i - При этом легко решается проблема путаницы имен, возникающая при повторном описании переменной с таким же именем, как у описанной ранее переменной. Область памяти, соответствующая локальным переменным какого-то блока, возвращается системе при выходе из этого блока. [33]
СО и СЗ в регистре слова состояния согласно табл. 18 и выгружает содержимое текущего ST ( 0) и первого ST ( 1) регистров стека. Действительное данное из операнда-источника и операнда: приемника выгружается увеличением содержимого указателя стека в регистре слова состояния на два и присвоением верхнему и первому регистрам состояния пусто в регистре признаков. [34]
При выполнении этих операторов содержимое регистра X засылается в один из крайних регистров стека, содержимое которого смещается на один регистр, и в регистр X заносится прежнее содержимое другого крайнего регистра стека. [35]
Для любого х из УУ машина М вычисляет значения g ( x), l ( x) х - [ / х ] 2 и помещает их в два регистра стека с наибольшими номерами. [36]
Команда FILD ( INTEGER LOAD) уменьшает на единицу содержимое указателя стека ST в регистре слова состояния, преобразует внешний 2 -, 4 - или 8-байтный целочисленный формат во внутренний временный действительный формат и загружает его в верхний ( новый) регистр стека. [37]
Структурная схема микро - ЭВМ.| Структурная схема микропроцессора. [38] |
Стек предназначен для хранения информации о состоянии процессора в случае лр ерывания или ветвления программы. Адресация регистров стека осуществляется автоматически без указания адреса в команде. [39]
При работе стека в кольцевом режиме смещение верх приводит к пересылке прежнего содержимого последнего регистра в первый ( рис. 1.4, в), а смещение вниз - к засылке прежнего содержимого первого регистра в последний ( рис. 1.4, г), причем в обоих случаях исходная информация сохраняется в стеке. Смещения содержимого регистров кольцевого стека называют поворотом кольцевого стека по и против часовой стрелки. [40]
Команда FBx вызывает содержимое регистра XI в регистр X. Числа в регистрах стека при этом сдвигаются снизу вверх. В регистре XI остается копия находившегося там прежде числа. [41]
Рассмотрим некоторые дополнительные операции с регистрами стека, позволяющие не только проверять содержимое регистров, но и использовать стековую память при вычислении сложных выражений. Предварительно заметим, что в дополнение к четырем стековым регистрам в МК-54 имеется еще один регистр, который обозначается RX1 и называется регистром предыдущего результата. [42]
Для того чтобы выполнить микрооператор, в стеке размещается в строго определенном порядке последовательность параметров, указывающая адреса исходных и результирующих строк, длину последовательности, характер обработки. Эта информация, расположенная в аппаратных регистрах стека, собственно, и играет роль микрокоманд, используемых центральным процессором для выполнения этих сложных операций. [43]
Команда FPTAN ( PARTIAL TANGENT - вычисление частичного тангенса) формирует два числа X и Y, отношение которых ( X / Y) равно тангенсу аргумента Z. Исходное значение аргумента Z находится в текущем регистре стека. После выполнения команды FPTAN число Y записывается в текущий регистр стека, а число X проталкивается в стек. Результат вычисления функции ( отношение Y / X) может быть использован для вычисления тригонометрических функций тангенса и котангенса, например с помощью команд FDIV или FDIR соответственно. [44]
С регистрами стека связан 3-разрядный указатель стека, а с каждым из них - 2-разрядное поле признака. Регистр признаков ( РП) используется для учета неиспользованных регистров стека и обозначения специальных величин ( например, нуля) при обработке особых ситуаций и оптимизации внутреннего микрокода. Данные представляются в стеке только в формате промежуточного вещественного. Они имеют 64-разрядную мантиссу и 15-разрядный порядок. В этом же формате независимо от используемых типов данных производятся все внутренние вычисления. [45]