Базовий блок — це прямолінійна послідовність коду, без галужень, з лише однією точкою входу і однією точкою виходу. Ця обмежена форма робить базовий блок дуже піддатливим для аналізу. Зазвичай, компілятори на першому етапі процесу аналізу розкладають програму на її базові блоки. Базові блоки утворюють вершини або вузли в графі потоку керування.
Означення
Код базового блоку має:
- Одну точку входу, тобто жодна частина його коду не може бути пунктом призначенням команди переходу з іншої частини програми.
- Одну точку виходу, тобто лише остання інструкція маже спричинити перехід програми в інший базовий блок. За цих умов, якщо перша інструкція базового блоку виконана, інші інструкції буде обов'язково виконано рівно один раз, в їх порядку.
Кодом може бути початковий код, асемблерний код або інша послідовність інструкцій.
Більш формально, послідовність інструкцій утворює базовий блок якщо:
- Інструкція в кожній позиції домінує над, або завжди виконується перед, всіма інструкціями в наступних позиціях.
- Ніяка інша інструкція не може бути виконана між двома інструкція з послідовності.
Блоки, в які може перейти керування після досягнення кінця блоку називаються наступниками, тоді як блоки з яких керування може перейти у поточний блок називаються попередниками. На початок блоку можна перестрибнути більш ніж з однієї локації.
Примітки
- Basic Blocks [ 20 грудня 2019 у Wayback Machine.] Нутрощі GNU компіляторів
- . Архів оригіналу за 26 травня 2020. Процитовано 4 жовтня 2016.
- "Global Common Subexpression Elimination" by John Cocke
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Bazovij blok ce pryamolinijna poslidovnist kodu bez galuzhen z lishe odniyeyu tochkoyu vhodu i odniyeyu tochkoyu vihodu Cya obmezhena forma robit bazovij blok duzhe piddatlivim dlya analizu Zazvichaj kompilyatori na pershomu etapi procesu analizu rozkladayut programu na yiyi bazovi bloki Bazovi bloki utvoryuyut vershini abo vuzli v grafi potoku keruvannya OznachennyaKod bazovogo bloku maye Odnu tochku vhodu tobto zhodna chastina jogo kodu ne mozhe buti punktom priznachennyam komandi perehodu z inshoyi chastini programi Odnu tochku vihodu tobto lishe ostannya instrukciya mazhe sprichiniti perehid programi v inshij bazovij blok Za cih umov yaksho persha instrukciya bazovogo bloku vikonana inshi instrukciyi bude obov yazkovo vikonano rivno odin raz v yih poryadku Kodom mozhe buti pochatkovij kod asemblernij kod abo insha poslidovnist instrukcij Bilsh formalno poslidovnist instrukcij utvoryuye bazovij blok yaksho Instrukciya v kozhnij poziciyi dominuye nad abo zavzhdi vikonuyetsya pered vsima instrukciyami v nastupnih poziciyah Niyaka insha instrukciya ne mozhe buti vikonana mizh dvoma instrukciya z poslidovnosti Bloki v yaki mozhe perejti keruvannya pislya dosyagnennya kincya bloku nazivayutsya nastupnikami todi yak bloki z yakih keruvannya mozhe perejti u potochnij blok nazivayutsya poperednikami Na pochatok bloku mozhna perestribnuti bilsh nizh z odniyeyi lokaciyi PrimitkiBasic Blocks 20 grudnya 2019 u Wayback Machine Nutroshi GNU kompilyatoriv Arhiv originalu za 26 travnya 2020 Procitovano 4 zhovtnya 2016 Global Common Subexpression Elimination by John Cocke