Шапка

9.3 Использование третьего стека

Третий стек часто предлагается в качестве варианта конструкции стековых машин. Основным назначением называется сохранение счётчиков циклов и локальных переменных.

В обычных стековых процессорах счётчики циклов обычно хранятся на вершине стека возврата. Это делается, потому что процедуры и циклы являются вложенными друг в друга программными конструкциями и попытки обращения к счётчику цикла из внутреннего кода этого цикла, а тем паче цикла более глубокой вложенности, считается очень плохой практикой. Таким образом, хотя и существуют некоторые концептуальные достоинства у хранения счётчиков цикла в отдельном стеке и исключения из стека возвратов неадресной информации, увеличение производительности не компенсирует усложнения аппаратуры.

Другим аргументом являются локальные переменные. Даже программист, использующий язык FORTH, знает, что концепция локальных переменных, управляемых компилятором, упрощает создание и сопровождение некоторых приложений. Но для увеличения производительности аппаратура должна работать со стеком, организованным покадрово, с произвольным доступом к данным внутри кадра. Это требование сильно напоминает условия поддержки традиционных языков программирования. Таким образом, возможно, правильным решением будет отказаться от третьего аппаратного стека совсем. Вместо него лучше обслуживать программный стек в системной памяти и оставить один указатель кадра, который будет использоваться для поддержки обычных языков и локальных переменных в FORTH.

Previous part:

Next part: