Tərtibçidə Faza və Keçid Arasındakı Fərq

Tərtibçidə Faza və Keçid Arasındakı Fərq
Tərtibçidə Faza və Keçid Arasındakı Fərq

Video: Tərtibçidə Faza və Keçid Arasındakı Fərq

Video: Tərtibçidə Faza və Keçid Arasındakı Fərq
Video: Know Your Rights: Service Animals 2024, Iyul
Anonim

Faza vs Compiler-də Keçid

Ümumiyyətlə kompilyator mənbə dil adlanan bir dildə yazılmış proqramı oxuyan və onu hədəf dil adlanan başqa dilə çevirən kompüter proqramıdır. Ənənəvi olaraq mənbə dili C++ kimi yüksək səviyyəli dil, hədəf dil isə Assambleya dili kimi aşağı səviyyəli dil idi. Beləliklə, ümumiyyətlə tərtibçiləri bir dildən digərinə tərcümə edən tərcüməçilər kimi görmək olar. Keçid və Faza kompilyatorlarla tez-tez istifadə olunan iki termindir. Kompilyatorun keçidlərinin sayı onun mənbədən (və ya onun hansısa formada) üzərindən keçmə sayıdır. Quraşdırmanın rahatlığı üçün kompilyator hissələrə bölünür. Faza çox vaxt kompilyatorun belə tək müstəqil hissəsini çağırmaq üçün istifadə olunur.

Tərtibçidə keçid nədir?

Tərtibçiləri təsnif etməyin standart yolu “keçidlərin” sayına görədir. Adətən, kompilyasiya nisbətən resurs tələb edən bir prosesdir və əvvəlcə kompüterlərin tam işi görən belə bir proqramı saxlamaq üçün kifayət qədər yaddaşı yox idi. İlkin kompüterlərdə aparat resurslarının bu məhdudiyyətinə görə kompilyatorlar mənbə kodunu keçərək (mənbə və ya onun hər hansı digər forması üzərindən “keçid” etmiş) öz işini qismən yerinə yetirən daha kiçik alt proqramlara bölünmüş və təhlillər aparmışlar., çevrilmələr və tərcümə tapşırıqları ayrıca. Beləliklə, bu təsnifatdan asılı olaraq, tərtibçilər bir keçidli və ya çox keçidli tərtibçilər kimi müəyyən edilir.

Adından da göründüyü kimi, bir keçidli tərtibçilər bir keçiddə tərtib edirlər. Bir keçidli kompilyator yazmaq daha asandır və onlar çox keçidli tərtibçilərdən daha sürətli işləyirlər. Buna görə də, hətta resurs məhdudiyyətləriniz olan vaxtda belə, dillər bir keçiddə (məsələn, Paskal) tərtib oluna biləcək şəkildə hazırlanmışdır. Digər tərəfdən, tipik çox keçidli kompilyator bir neçə əsas mərhələdən ibarətdir. Birinci mərhələ skanerdir (leksik analizator kimi də tanınır). Skaner proqramı oxuyur və onu bir sıra işarələrə çevirir. İkinci mərhələ təhlildir. O, proqramın sintaktik strukturunu tutan ayələr sətirini təhlil ağacına (və ya abstrakt sintaksis ağacına) çevirir. Növbəti mərhələ sintaktik quruluşun semantikasını şərh edən mərhələdir. Kod optimallaşdırma mərhələləri və son kod yaratma mərhələsi bunu izləyir.

Kompilyatorda Faza nədir?

Tərtibçinin qurulması haqqında danışdığınız zaman termin mərhələsi tez-tez ortaya çıxır. Başlanğıcda kompilyatorlar sadə bir dilin tərtibi üçün bir şəxs tərəfindən yazılmış tək, monolit proqram təminatının hər sadə parçaları idi. Lakin tərcümə ediləcək dilin mənbə kodu mürəkkəb və böyük olduqda, tərtibçi çoxlu (nisbətən müstəqil) mərhələlərə bölünür. Fərqli mərhələlərin olmasının üstünlüyü ondan ibarətdir ki, tərtibçinin inkişafı bir qrup tərtibatçı arasında bölüşdürülə bilər. Bundan əlavə, fazaların təkmilləşdirilmiş fazalarla əvəz edilməsinə və ya əlavə mərhələlərin (məsələn, əlavə optimallaşdırmalar) kompilyatora əlavə edilməsinə imkan verməklə modulluğu və təkrar istifadəni yaxşılaşdırır. Kompilyasiyanın mərhələlərə bölünməsi prosesi Karnegi Melon Universitetində PQCC (Production Quality Compiler-Compiler Project) tərəfindən təqdim edilmişdir. Onlar front end, orta son və back end terminlərini təqdim etdilər. Əksər kompilyatorların ən azı iki mərhələsi var. Lakin adətən, arxa və ön hissə bu mərhələləri əhatə edir.

Tərtibçidə Faza və Keçid arasındakı fərq nədir?

Phase və Pass kompilyatorlar sahəsində istifadə olunan iki termindir. Keçid, tərtibçinin mənbə kodunu və ya onun hər hansı digər təqdimatını keçdiyi (keçdiyi) bir dəfədir. Tipik olaraq, əksər kompilyatorların ön və arxa uç adlanan ən azı iki fazası var, halbuki onlar bir keçidli və ya çox keçidli ola bilər. Faza kompilyatorları konstruksiyaya görə təsnif etmək üçün, pass isə tərtibçiləri işləmə üsuluna görə təsnif etmək üçün istifadə olunur.

Tövsiyə: