Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Компьютерлік ғылымда, сирек шартты тұрақты тарату (SCCP) – статикалық бір тапсырма түріне (SSA) түрлендірілгеннен кейін компиляторларда жиі қолданылатын оптимизация. Ол тұрақтыларды таратуды жүзеге асырады, яғни компиляция уақытында есептелетін статикалық мәндерді анықтау. Бұдан әрі, ол өлі кодты жою және кез келген ретпен немесе кез келген санымен тұрақты таратуды жеке-жеке қолдануға қарағанда көбірек тұрақты мәндерді таба алады, демек, жақсартуға көбірек мүмкіндіктер ашылады. Алгоритм SSA түріндегі кодты абстрактілі интерпретациялау арқылы жұмыс істейді. Абстрактілі интерпретация кезінде, әдетте, мәндер үшін тұрақтылардың жазық торы және осы тордағы мәндерге SSA айнымалыларын бейнелейтін жаһандық орта қолданылады. Алгоритмнің өзегі – оның тармақталу нұсқауларын интерпретациялау әдісінде. Кездескен кезде, тармақталу шарты шарттағы айнымалыларға байланысты абстрактілі мәндердің дәлдігін ескере отырып, мүмкіндігінше жақсы бағаланады. Мүмкін, мәндер толыққанды дәл (жоғарғы немесе төменгі емес) болып келеді, сондықтан абстрактілі орындау тармақталу бағытын анықтай алады. Егер мәндер тұрақты болмаса немесе шарттағы айнымалы анықталмаған болса, консервативтік болу үшін екі тармақ бағытын да қарастыру қажет. Абстрактілі интерпретация аяқталғаннан кейін, ешқашан орындалмаған нұсқаулар өлі код деп белгіленеді. Содан кейін тұрақты мәндері бар SSA айнымалылары олардың қолданылу орнында (тарату) енгізіле алады.
In computer science, sparse conditional constant propagation (SCCP) is an optimization frequently applied in compilers after conversion to static single assignment form (SSA). It propagates constants, which is the calculation of static values which can be calculated at compile time. Moreover, it can find more constant values, and thus more opportunities for improvement, than separately applying dead code elimination and constant propagation in any order or any number of repetitions. The algorithm operates by performing abstract interpretation of the code in SSA form. During abstract interpretation, it typically uses a flat lattice of constants for values and a global environment mapping SSA variables to values in this lattice. The crux of the algorithm comes in how it handles the interpretation of branch instructions. When encountered, the condition for a branch is evaluated as best possible given the precision of the abstract values bound to variables in the condition. It may be the case that the values are perfectly precise (neither top nor bottom) and hence, abstract execution can decide in which direction to branch. If the values are not constant, or a variable in the condition is undefined, then both branch directions must be taken to remain conservative. Upon completion of the abstract interpretation, instructions which were never reached are marked as dead code. SSA variables found to have constant values may then be inlined at (propagated to) their point of use.