Cтраница 1
Стековые системы реализуются с помощью программного обе - j спечения либо аппаратным путем. [1]
Стековые системы, описанные в предыдущих разделах, реализуются с помощью программного обеспечения. [2]
Применяемая при этом стековая система в основном аналогична системе, описанной в разд. [3]
Такую блочную структуру очень удобно реализовывать в рамках стековой системы: блок рассматривается как процедура без параметров, и при входе в блок регистры стека, непосредственно следующие за связью, отводятся для переменных, описанных в начале блока. Таким образом, аналогично тому как для процедуры i - й аргумент находится в ячейке L - i, точно так же 1-я по счету описанная в блоке переменная находится в ячейке L - - / При этом легко решается проблема путаницы имен, возникающая при повторном описании переменной с таким же именем, как у описанной ранее переменной. Область памяти, соответствующая локальным переменным какого-то блока, возвращается системе при выходе из этого блока. [4]
Такую блочную структуру очень удобно реализовывать в рамках стековой системы: блок рассматривается к к процедура без параметров, и при входе в блок регистры стека, непосредственно следующие за связью, отводятся для переменных, описанных в начале блока. Таким образом, аналогично тому как для процедуры ьй аргумент находится в ячейке L - i, точно так же i-я по счету описанная в блоке переменная находится в ячейке L i - При этом легко решается проблема путаницы имен, возникающая при повторном описании переменной с таким же именем, как у описанной ранее переменной. Область памяти, соответствующая локальным переменным какого-то блока, возвращается системе при выходе из этого блока. [5]
Машина В5000 представляет особый интерес. Ее аппаратура обеспечивает стековую систему, которая в. Стек хранится в ферритовой памяти и может иметь неограниченную-длину; поэтому он действительно обеспечивает все возможности для рекурсивных процедур. Аппаратный стек является только одной из многих интересных особенностей этой машины. Например, операндные ссылки на стек называются дескрипторами, ж в зависимости от содержимого определенных управляющих разрядов из машинного слова остальная часть содержимого поля операндов может интерпретироваться либо как операнд, либо как указатель операнда, либо как адрес подпрограммы, которая; вычислит указатель операнда. [6]
Машина В5000 представляет особый интерес. Ее аппаратура обеспечивает стековую систему, которая R основном соответствует системе, описанной в разд. Стек хранится в ферритовой памяти и может иметь неограниченную длину; поэтому он действительно обеспечивает все возможности для рекурсивных процедур. Аппаратный стек является только одной из многих интересных особенностей этой машины. Например, операндные ссылки на стек называются дескрипторами, и в зависимости от содержимого определенных управляющих разрядов из машинного слова остальная часть содержимого поля операндов может интерпретироваться либо как операнд, либа как указатель операнда, либо как адрес подпрограммы, которая вычислит указатель операнда. [7]
Рассмотрим модуль, реализующий стековую систему управления памятью. В стеке новые объекты располагаются над уже существующими, подобно тому как одна тарелка ставится на стопку других. При извлечении последний добавленный в стек элемент извлекается первым. Поэтому для обозначения такой системы организации памяти используется термин LIFO ( от англ. [8]
Язык ЛИСП допускает ( и в сущности подразумевает) ре курсивность всех функций. Система программирования на языке ЛИСП может быть реализована с использованием стековой системы, аналогичной той, которая описана в разд. Первоначальная система ЛИСП 1.5, реализованная впервые на машинах IBM 7090 / 94, использует стек, элементами которого являются блоки регистров, причем каждый блок содержит информацию о своей длине и о соответствующем месте в памяти, откуда он появился, а также содержит имя той процедуры, которой он принадлежит. Эти имена процедур позволяют организовать полезную систему диагностики ошибок, так как путем исследования стека можно проследить последовательность тех функций, в которые был осуществлен вход. Эта обратная последовательность обычно печатается после любой ошибки. [9]
Язык ЛИСП допускает ( и в сущности подразумевает) ре-курсивность всех функций. Система программирования на языке ЛИСП может быть реализована с использованием стековой системы, аналогичной той, которая описана в разд. Первоначальная система ЛИСП 1.5, реализованная впервые на машинах IBM 7090 / 94, использует стек, элементами которого являются блоки регистров, причем каждый блок содержит информацию о своей длине и о соответствующем месте в памяти, откуда он появился, а также содержит имя той процедуры, которой он принадлежит. Эта обратная последовательность обычно печатается после любой ошибки. [10]