Число Ершова - Ershov Number
Эта статья не цитировать любой источники.Апрель 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Числа Ершова используются в оптимизация кода минимизировать количество регистрировать распределения. Числа Ершова можно использовать в методах для оптимального выбора регистров, когда в кодовом блоке есть только одно выражение. Учитывая выражение E = E1 op E2 цель состоит в том, чтобы сгенерировать код таким образом, чтобы либо минимизировать количество используемых регистров, либо, если доступно недостаточное количество регистров, минимизировать количество требуемых временных нерегистров.
Число Ершова п узла в данном дерево выражений определяется следующим образом:
- Каждый лист имеет п = 1.
- Для узла с одним потомком п такой же, как у ребенка.
- Для узла с двумя дочерними элементами п определяется как:
Число Ершова узел представляет минимальное количество регистров, необходимых для оценки части выражения, корнем которой является этот узел. Идея состоит в том, что мы сначала оцениваем дочерний элемент с большим числом Ершова, затем второй дочерний элемент, а затем выполняем операцию с корнем.
Пример
Предположим, у нас есть дерево выражений с операцией '+' в корне, а также слева и справа. поддеревья имеют числа Ершова 3 и 4 соответственно. Число Ершова этого узла равно 4, поэтому мы должны иметь возможность сгенерировать код для выражения, используя 4 регистра.
- Сгенерируйте код для оценки правильного дочернего элемента, используя регистры r1, r2, r3 и r4. Поместите результат в r1.
- Сгенерируйте код для оценки левого потомка, используя регистры r2, r3 и r4. Поместите результат в r2.
- Выполните команду «ADD r1, r2, r1».
Если не хватает регистров?
Если число Ершова корня дерева выражений больше, чем количество регистров, то числа Ершова можно использовать для генерации кода с использованием минимального количества загрузок и сохранений, как показано ниже:
- сгенерировать код для ребенка с большим числом Ершова
- дать указание сохранить результат во временном
- сгенерировать код для ребенка с меньшим числом Ершова
- дать команду на загрузку временного в регистр
- выдать инструкцию на выполнение операции в корне
Смотрите также
- Номер Strahler, минимальное количество регистров, необходимое для оценки выражения без внешнего хранилища
- Алгоритм Сетхи – Уллмана, в основном та же концепция