Jump to content

Номер Ершова

Ershov numbers , named after Andrey Petrovich Yershov , [1] используются при оптимизации кода для минимизации количества выделяемых регистров . Числа Ершова можно использовать в методах оптимального выбора регистров, когда в блоке кода имеется только одно выражение. Учитывая выражение E = E 1 op E 2, цель состоит в том, чтобы сгенерировать код, чтобы либо минимизировать количество используемых регистров, либо, если доступно недостаточное количество регистров, минимизировать количество требуемых нерегистровых временных элементов.

Определение

[ редактировать ]

Число Ершова n узла в данном дереве выражений определяется следующим образом: [2] [3]

  1. Каждый лист имеет n = 1.
  2. Для узла с одним дочерним элементом n такое же, как и у дочернего узла.
  3. Для узла с двумя дочерними элементами n определяется как:

Число Ершова узла представляет собой минимальное количество регистров, необходимое для вычисления подвыражения, корнем которого является этот узел. Идея состоит в том, что мы сначала оцениваем дочерний элемент с большим числом Ершова, затем другой дочерний элемент, а затем выполняем операцию в корне.

Предположим, у нас есть дерево выражений с операцией «+» в корне, а левое и правое поддеревья имеют числа Ершова 3 и 4 соответственно. Число Ершова этого узла равно 4, поэтому мы сможем сгенерировать код выражения, используя 4 регистра.

  1. Сгенерируйте код для оценки правильного дочернего элемента, используя регистры r1, r2, r3 и r4. Поместите результат в r1.
  2. Сгенерируйте код для оценки левого дочернего элемента, используя регистры r2, r3 и r4. Поместите результат в r2.
  3. Выдать инструкцию ADD r1, r1, r2, который складывает r1 и r2 и сохраняет результат в r1.

Генерация кода

[ редактировать ]

Общая процедура генерации кода с использованием минимального количества загрузок и сохранений из памяти следующая:

  1. Сначала сгенерируйте код для дочернего элемента с наибольшим числом Ершова.
  2. Выдайте команду сохранить результат во временном регистре или, если он недоступен, во временном месте в памяти.
  3. Сгенерируйте код для дочернего элемента с меньшим числом Ершова.
  4. Выдайте инструкцию для загрузки временной переменной обратно в регистр.
  5. Выдать инструкцию для выполнения операции в корне

В идеальном случае, если имеется n регистров и для первого подвыражения требуется n регистров, а для следующего подвыражения требуется n - 1 регистров, для хранения результата первого выражения можно использовать один регистр, и их все равно будет n - 1. регистры доступны для вычисления следующего подвыражения, поэтому вообще не требуется загрузка или сохранение из памяти. [1]

Если число Ершова корня дерева выражений больше количества доступных регистров, число Ершова также можно использовать для определения объема требуемой дополнительной временной памяти, например, в стеке . [1]

См. также

[ редактировать ]
  1. ^ Jump up to: а б с «Заметки по генерации кода» (PDF) . Департамент компьютерных наук Университета Калгари. 14 сентября 2007 года . Проверено 30 мая 2022 г.
  2. ^ «Оптимальная генерация кода (для выражений) и анализ потока данных» (PDF) . Карлтонский университет . Проверено 30 мая 2022 г.
  3. ^ «Генерация кода, глава 8» (PDF) . Университет Западного Мичигана . Проверено 30 мая 2022 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a173dfa6dfba82febccfb4a64e0a82d6__1653900480
URL1:https://arc.ask3.ru/arc/aa/a1/d6/a173dfa6dfba82febccfb4a64e0a82d6.html
Заголовок, (Title) документа по адресу, URL1:
Ershov Number - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)