Алгоритм Сети — Ульмана

Алгоритм Сети — Ульмана
Назван в честь Ravi Sethi[вд] и Джеффри Ульман
Предназначение поиск оптимального порядка трансляции выражения
Структура данных граф

Алгоритм Сети — Ульманаалгоритм, трансляции абстрактных синтаксических деревьев в машинный код, который использует как можно меньше регистров. Алгоритм назван именами его разработчиков Рави Сети[англ.] и Джеффри Ульмана,

Обзор

При генерации кода для арифметических выражений компилятор должен решить, какой путь лучший для трансляции выражения в терминах числа используемых команд, а также числа регистров, необходимых для вычисления определённого поддерева. Особенно в случае, когда число свободных регистров мало, порядок выполнения может быть важным для длины генерируемого кода, поскольку различный порядок вычисления может приводить к большему или меньшему числу промежуточных значений, которые вытесняются в память, а затем восстанавливаются. Алгоритм Сети — Ульмана (известный также как нумерация Сети — Ульмана) обладает свойством создавать код, который требует минимального числа инструкций, а также минимального числа ссылок на память (при предположении, что по меньшей мере операции коммутативны и ассоциативны, но закон дистрибутивности, то есть , не выполняется). Заметим, что алгоритм завершается успешно, даже если ни коммутативность, ни ассоциативность в выражении место не имеют, а потому арифметические преобразования не могут быть применены. Алгоритм также не использует выявление общих подвыражений или явного применения общих ориентированных ациклических графов вместо деревьев.

Простой алгоритм Сети — Ульмана

Простой Алгоритм Сети — Ульмана работает следующим образом (для архитектуры load/store[англ.]):

  1. Обход абстрактного синтаксического дерева в прямом или обратном порядке
    1. Любому неконстантному листовому узлу назначим 1 (то есть нужен 1 регистр для хранения переменной/поля/и т.д.). Любому константному листу (правая сторона операции – литералы, значения) назначим 0.
    2. Любому нелистовому узлу n назначаем число регистров, нужных для вычисления соответствующего поддерева n. Если число регистров, необходимых в левом поддереве (l), не равно числу регистров, необходимых в правом поддереве (r), число регистров, нужных в текущем узле n равно max(l, r). Если l == r, то число регистров, необходимых для текущего узла, равно .
  2. Формирование кода
    1. Если число регистров, нужное для вычисления левого поддерева узла n больше, чем число регистров для правого поддерева, то левое поддерево вычисляется в первую очередь (поскольку может потребоваться один дополнительный регистр для сохранения результата правого поддерева, перекрывается регистром левого поддерева). Если правое поддерево требует больше регистров, чем левое, то правое дерево вычисляется первым. Если оба поддерева требуют равное число регистров, то порядок выполнения не играет роли.

Пример

Для арифметического выражения , абстрактное синтаксическое дерево выглядит следующим образом:

               =
              / \
             a   *
                / \
               /   \
              +     +
             / \   / \
            /   \ d   3
           +     *
          / \   / \
         b   c f   g

Для выполнения алгоритма нам нужно только проверить арифметическое выражение , т.е. нам нужно просмотреть только правое поддерево назначения '=':

               *
              / \
             /   \
            +     +
           / \   / \
          /   \ d   3
         +     *
        / \   / \
       b   c f   g

Теперь мы начинаем просмотр дерева, назначая число регистров, необходимых для вычисления каждого поддерева (заметим, что последнее слагаемое в выражении является константой):

               *2
              / \
             /   \
            +2    +1
           / \   / \
          /   \ d1  30
         +1   *1
        / \   / \
       b1  c0f1  g0

Из этого дерева можно видеть, что нам нужно 2 регистра для вычисления левого поддерева '*', но нужен только один регистр для вычисления правого поддерева. Узлам 'c' и 'g' не нужны регистры по следующим причинам: Если T является листом дерева, то число регистров для вычисления T равно 1 или 0 в зависимости от того, находится ли T в левом или правом поддереве (поскольку операции, такие как add R1, A, могут обрабатывать правый компонент A прямо без занесения его в регистр). Поэтому нам следует начать c выполнения левого поддерева, поскольку мы можем получить ситуацию, когда у нас есть только два регистра для вычисления всего выражения. Если мы вычисляем сначала правое поддерево (которое требует только один регистр), нам пришлось бы хранить результат правого поддерева во время вычисления левого поддерева (для которого нужно всё ещё 2 регистра), поэтому нужно 3 регистра. Вычисление левого поддерева требует двух регистров, но результат может быть запомнен в одном регистре, а поскольку правое поддерево требует для вычисления один регистр, вычисление выражения можно осуществить всего с двумя регистрами.

Улучшенный алгоритм Сети — Ульмана

В улучшенной версии алгоритма Сети — Ульмана арифметические выражения сначала преобразуются, используя арифметические свойства используемых операторов.

См. также

Примечания

Литература

Ссылки

Read other articles:

Karl BarthPerangko Jerman memperingati 100 tahun kelahiran Karl Barth (1886—1968)Lahir(1886-05-10)10 Mei 1886Basel, SwissMeninggal10 Desember 1968(1968-12-10) (umur 82)Basel, SwissPekerjaanTeolog, pengarangKarya terkenalThe Epistle to the RomansChurch DogmaticsKiprah di bidang teologiTradisi atau gerakanTeologi ReformedNeo-OrtodoksiSosialisme KristenGagasan terkenalTeologi Dialektikalanalogia fidei Karl Barth (10 Mei 1886 – 10 Desember 1968) adalah seorang teolog Krist...

 

الدوري الهولندي الدرجة الأولى تفاصيل الموسم 1962–1963 البلد هولندا  البطل دوور فيلسكراخت ستيرك  [لغات أخرى]‏ مباريات ملعوبة 240   أهداف مسجلة 831   1961–1962 1963–1964 تعديل مصدري - تعديل   الدوري الهولندي الدرجة الأولى 1962–1963 هو الموسم السابع من الدوري الهولندي لكرة ا�...

 

This article is about a bishop's throne. For the planthopper genus, see Cathedra serrata. Bishop's throne in a cathedral The cathedra of the Pope in the apse of St. John Lateran, the cathedral of Rome Modern cathedra at the Cathedral of Our Lady of the Angels in Los Angeles Cathedra (19th century) showing arms of the Episcopal Diocese of Pennsylvania, at the Church of the Good Shepherd (Rosemont, Pennsylvania) A cathedra is the raised throne of a bishop in the early Christian basilica.&#...

BLOODY MONDAY ジャンル 少年漫画、サスペンス漫画、アクション漫画 漫画:BLOODY MONDAYBLOODY MONDAY Season2 ∼絶望ノ匣∼BLOODY MONDAY ラストシーズン 原作・原案など 龍門諒 作画 恵広史 出版社 講談社 掲載誌 週刊少年マガジン 発表期間 2007年17号 - 2009年20号(Season1)2009年46号 - 2011年21号(Season2)2011年29号 - 2012年17号(ラストシーズン) 巻数 全11巻(Season1)全8巻(Season2)全4巻(...

 

German lawyer and politician Pottering redirects here. For the software developer, see Lennart Poettering. Hans-Gert PötteringPöttering in 2014President of the European ParliamentIn office16 January 2007 – 14 July 2009Vice PresidentRodi Kratsa-TsagaropoulouPreceded byJosep BorrellSucceeded byJerzy BuzekLeader of the European People's Party-European DemocratsIn office20 July 1999 – 16 January 2007Preceded byWilfried MartensSucceeded byJoseph DaulMember of the European&#...

 

This article's tone or style may not reflect the encyclopedic tone used on Wikipedia. See Wikipedia's guide to writing better articles for suggestions. (October 2023) (Learn how and when to remove this message) Name for Earth or North America used by Indigenous peoples in Canada and the United States For other uses, see Turtle Island. Satellite image of Turtle Island Turtle Island is a name for Earth[1] or North America, used by some American Indigenous peoples, as well as by some Ind...

Italian baritone (1913–1984) Gobbi in 1973 (photo by Allan Warren) Tito Gobbi (24 October 1913 – 5 March 1984) was an Italian operatic baritone with an international reputation. He made his operatic debut in Gubbio in 1935 as Count Rodolfo in Bellini's La sonnambula and quickly appeared in Italy's major opera houses. By the time he retired in 1979 he had acquired a repertoire of almost 100 operatic roles. They ranged from Mozart's mid-range baritone roles through Rossini's Ba...

 

الهاتف المميز (بالإنجليزية: Feature phone) ويعني هاتف محمول يُقصد به للعملاء الذين يرغبون بأسعار معتدلة وهاتف متعدد الاستخدامات من دون حساب، هذا الهاتف يتطور الآن بشكل عالٍ أكثر من السابق، يُعد هذا الهاتف هاتفًا أعلى مستوى من الهواتف المحمولة وأقل مستوى من الهواتف الذكية.[1]...

 

Village in Estonia Village in Rapla County, EstoniaAravereVillageCountry EstoniaCountyRapla CountyParishMärjamaa ParishPopulation (2005) • Total11Time zoneUTC+2 (EET) • Summer (DST)UTC+3 (EEST) Aravere is a village in Märjamaa Parish, Rapla County in western Estonia.[1] References ^ Classification of Estonian administrative units and settlements 2014[dead link] (retrieved 28 July 2021) vteSettlements in Märjamaa ParishBorough Märjamaa Vill...

Chris Van Hollen Christopher J. Van Hollen Jr.[1][2] (lahir 10 Januari 1959) adalah seorang politikus Amerika Serikat yang menjabat sebagai Senator Amerika Serikat junior dari Maryland sejak 3 Januari 2017. Dari 2003 sampai 2017, ia menjabat sebagai anggota DPR. Ia adalah anggota Partai Demokrat. Referensi ^ Hancock, Jay (December 24, 1995). Eat a chip, or have a pretzel, the tax is hardest to swallow. Los Angeles Times. Diarsipkan dari versi asli tanggal December 24, 2018....

 

Valve in the human heart between the left ventricle and the aorta This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Aortic valve – news · newspapers · books · scholar · JSTOR (October 2021) (Learn how and when to remove this message) Aortic valveFrontal view of the aortic valveAortic valveDetailsIdentifiersLat...

 

Grammy Award for Best Traditional Folk AlbumAwarded forquality traditional folk music albumsCountryUnited StatesPresented byNational Academy of Recording Arts and SciencesFirst awarded1987Last awarded2011Websitegrammy.com Bob Dylan performing at Lida Festival in Stockholm, Sweden, in 1996. The Grammy Award for Best Traditional Folk Album was awarded from 1987 to 2011. Until 1993 the award was known as the Grammy Award for Best Traditional Folk Recording. An award for Best Contemporary Folk Al...

Cet article est une ébauche concernant les monuments historiques français et la Gironde. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Domaine de Margarance Début construction 1762 Protection  Inscrit MH (1966) Coordonnées 44° 58′ 06″ nord, 0° 32′ 01″ ouest Pays France Région historique Aquitaine Département Gironde Commune Saint-Louis-de-Montferrand Géolocal...

 

Pour les articles homonymes, voir Philippe III. Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (décembre 2023). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ». En prat...

 

French nobleman, general, Marshal of France (1611–1675) Turenne redirects here. For other uses, see Turenne (disambiguation). Henri de La Tour d'Auvergne redirects here. For Henri de La Tour d'Auvergne, Duke of Bouillon (1555–1623), see Henri de La Tour d'Auvergne, Duke of Bouillon. Henri de Turenne redirects here. For the French journalist and screenwriter, see Henri de Turenne (writer). Henri de La Tour d’Auvergne, Viscount of TurennePortrait by Philippe de ChampaigneNickname(s)Turenn...

Study of the evolutionary basis for animal behavior due to ecological pressures For other uses, see Behavioral ecology (disambiguation). Some examples of behavioural ecologyPenguins huddling in the AntarcticGeese flying in aerodynamic V-formationThe bee waggle dance communicating informationAn African elephant crossing a riverA frog with inflated vocal sacA stotting gazelleA male moor frog colored blue Behavioral ecology, also spelled behavioural ecology, is the study of the evolutionary basi...

 

Seaside village in Ceredigion, Wales Human settlement in WalesAberporthLeaping Dolphin sculpture, in AberporthAberporthLocation within CeredigionPopulation2,374 (2011)[1]OS grid referenceSN2549251448Principal areaCeredigionPreserved countyDyfedCountryWalesSovereign stateUnited KingdomPost townCardiganPostcode districtSA43 2PoliceDyfed-PowysFireMid and West WalesAmbulanceWelsh UK ParliamentCeredigion PreseliSenedd Cymru – Welsh ParliamentCeredi...

 

Play written by Brian Friel For other uses, see Translation (disambiguation). TranslationsTranslations on stage in MinskWritten byBrian FrielCharactersManus Sarah Jimmy JackMaireDoaltyBridgetHughOwenCaptain LanceyLieutenant YollandDate premiered23 September 1980Place premieredGuildhall, Derry, Northern IrelandOriginal languageEnglish[a]SubjectLanguage, colonialismGenretragicomedySettingCounty Donegal, late August 1833 Translations is a three-act play by Irish playwright Brian Friel, written i...

Disambiguazione – Se stai cercando altri significati, vedi Ginevra (disambigua). Questa voce o sezione sull'argomento centri abitati della Svizzera non cita le fonti necessarie o quelle presenti sono insufficienti. Commento: Numerosi paragrafi (cultura, amministrazione, trasporti etc.) privi di fonti Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Ginevracittà(FR) Genève Ginevra – VedutaDa sinistra a destra e dall...

 

NGC 1358 La galaxie spirale barrée NGC 1358 Données d’observation(Époque J2000.0) Constellation Éridan Ascension droite (α) 03h 33m 39,7s[1] Déclinaison (δ) −05° 05′ 22″ [1] Magnitude apparente (V) 12,1[2] 13,0 dans la Bande B[2] Brillance de surface 13,27 mag/am2[2] Dimensions apparentes (V) 2,1′ × 1,4′[2] Décalage vers le rouge +0,013436 ± 0,000033[1] Angle de position 3°[2] Localisation dans la constellation : Éridan Astromét...