Ershovovo číslo - Ershov Number
![]() | tento článek ne uvést žádný Zdroje.Dubna 2011) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Ershovova čísla jsou používány v optimalizace kódu minimalizovat množství přidělení registrů. Ershovova čísla lze v metodách použít k optimálnímu výběru registrů, když je v bloku kódu pouze jeden výraz. Vzhledem k výrazu E = E1 op E2 cílem je vygenerovat kód tak, aby buď minimalizoval počet použitých registrů, nebo, pokud je k dispozici nedostatečný počet registrů, minimalizoval počet požadovaných neregistrovaných dočasných položek.
Ershovovo číslo n daného uzlu strom výrazů je definována takto:
- Každý list má n = 1.
- U uzlu s jedním dítětem n je stejný jako dětský.
- U uzlu se dvěma dětmi n je definován jako:
Ershovovo číslo a uzel představuje minimální počet registrů potřebných k vyhodnocení podvýrazu, jehož kořenem je tento uzel. Myšlenka je, že nejprve vyhodnotíme dítě s větším Ershovovým číslem, potom druhé dítě a poté provedeme operaci v kořenu.
Příklad
Předpokládejme, že máme strom výrazů s operací '+' v kořenovém adresáři a vlevo a vpravo podstromy mají Ershovova čísla 3, respektive 4. Ershovovo číslo tohoto uzlu je 4, takže bychom měli být schopni generovat kód pro výraz pomocí 4 registrů.
- Vygenerujte kód k vyhodnocení správného dítěte pomocí registrů r1, r2, r3 a r4. Výsledek umístěte do r1.
- Generujte kód pro vyhodnocení levého dítěte pomocí registrů r2, r3 a r4. Výsledek umístěte do r2.
- Vydejte instrukci „PŘIDAT r1, r2, r1“.
Pokud není k dispozici dostatek registrů?
Pokud je číslo Ershov kořene stromu výrazu větší než počet registrů, lze čísla Ershov použít ke generování kódu pomocí minimálního počtu načtení a uložení, a to následovně:
- generovat kód pro dítě s větším Ershovovým číslem
- vydat pokyn k dočasnému uložení výsledku
- generovat kód pro dítě s menším Ershovovým číslem
- vydat pokyn k načtení dočasného do registru
- vydat pokyn k provedení operace v kořenovém adresáři
Viz také
- Strahlerovo číslo, minimální počet registrů potřebných k vyhodnocení výrazu bez jakéhokoli externího úložiště
- Sethi – Ullmanův algoritmus, v podstatě stejný koncept