Компилятордогу фаза менен өтүүнүн ортосундагы айырма

Компилятордогу фаза менен өтүүнүн ортосундагы айырма
Компилятордогу фаза менен өтүүнүн ортосундагы айырма

Video: Компилятордогу фаза менен өтүүнүн ортосундагы айырма

Video: Компилятордогу фаза менен өтүүнүн ортосундагы айырма
Video: Генератор свободной энергии. Все секреты раскрыты. Respondo todas tus preguntas 2024, Июль
Anonim

Компилятордогу фаза vs Pass

Жалпысынан компилятор – бул баштапкы тил деп аталган бир тилде жазылган программаны окуп, аны башка тилге которуучу компьютердик программа. Адаттагыдай, булак тил C++ сыяктуу жогорку деңгээлдеги тил жана максаттуу тил Ассемблер тили сыяктуу төмөнкү деңгээлдеги тил болгон. Ошентип, жалпысынан компиляторлорду бир тилден экинчи тилге которгон котормочулар катары кароого болот. Pass жана Phase - бул эки термин, көбүнчө компиляторлор менен колдонулат. Компилятордун өтүү саны - бул булактан (же аны көрсөтүүнүн кандайдыр бир түрү) өткөн жолу. Курулуштун ыңгайлуулугу үчүн компилятор бөлүктөргө бөлүнгөн. Фаза көбүнчө компилятордун жалгыз көз карандысыз бөлүгүн чакыруу үчүн колдонулат.

Компилятордогу билет деген эмне?

Компиляторлорду классификациялоонун стандарттуу жолу - бул "өтүүлөрдүн" саны. Адатта, компиляция салыштырмалуу ресурсту талап кылган процесс жана башында компьютерлерде толук ишти аткарган мындай программаны кармоо үчүн эстутум жетишсиз болгон. Алгачкы компьютерлердеги аппараттык ресурстардын мындай чектөөсүнөн улам, компиляторлор баштапкы коддон өтүп (булактан же анын кандайдыр бир башка формасынан "өткөрүү" жасаган) өзүнүн жарым-жартылай ишин аткарган кичинекей чакан программаларга бөлүнгөн жана талдоо жүргүзүшкөн., трансформациялар жана которуу милдеттери өзүнчө. Ошентип, бул классификацияга жараша, компиляторлор бир өтүүчү же көп өтүүчү компиляторлор катары аныкталат.

Аты айтып тургандай, бир өтүүчү компиляторлор бир өтүүдө түзүшөт. Бир өтүүчү компиляторду жазуу оңой жана алар көп өтүүчү компиляторлорго караганда тезирээк иштешет. Ошондуктан, сизде ресурстук чектөөлөр болгон учурда да, тилдер бир жолку (мисалы, Паскаль) түзүлө тургандай кылып иштелип чыккан. Башка жагынан алганда, типтүү көп өтүү компилятору бир нече негизги этаптардан турат. Биринчи этап сканер (ошондой эле лексикалык анализатор деп аталат). Сканер программаны окуп, аны бир катар токендерге айлантат. Экинчи этап - талдоочу. Ал токендердин саптарын программанын синтаксистик түзүлүшүн камтыган талдоо дарагына (же абстракттуу синтаксис дарагына) айлантат. Кийинки этап - синтаксистик түзүлүштүн семантикасын чечмелөө. Кодду оптималдаштыруу этаптары жана акыркы кодду түзүү этабы ушуну аткарат.

Компилятордогу фаза деген эмне?

Термин фазасы көбүнчө компиляторду куруу жөнүндө сөз кылганда пайда болот. Башында, компиляторлор жөнөкөй тилди түзүү үчүн бир адам тарабынан жазылган бирдиктүү, монолиттүү программалык камсыздоонун ар бир жөнөкөй бөлүктөрү болгон. Бирок которула турган тилдин баштапкы коду татаал жана чоң болуп калганда, компилятор бир нече (салыштырмалуу көз карандысыз) фазаларга бөлүнгөн. Ар кандай фазаларга ээ болуунун артыкчылыгы - компиляторду иштеп чыгууну иштеп чыгуучулардын тобуна бөлүштүрсө болот. Андан тышкары, ал фазаларды жакшыртылгандарга алмаштырууга же компиляторго кошумча фазаларды (мисалы, андан аркы оптималдаштыруу) кошуу менен модулдукту жана кайра колдонууну жакшыртат. Компиляцияны фазаларга бөлүү процесси Карнеги Мелон университетинде PQCC (Продукциянын сапаты боюнча компилятор-компилятор долбоору) тарабынан киргизилген. Алар алдыңкы, орто аягы жана арткы аягы деген терминдерди киргизишти. Көпчүлүк компиляторлор жок дегенде эки фазага ээ. Бирок, адатта, арткы жана алдыңкы бөлүк бул фазаларды камтыйт.

Компилятордогу фаза менен өтүүнүн ортосунда кандай айырма бар?

Phase жана Pass - бул компиляторлор тармагында колдонулган эки термин. Өткөрүү - бул компилятор булак кодун же анын башка өкүлчүлүгүн бир жолу өткөрөт (өтөт). Адатта, көпчүлүк компиляторлор алдыңкы жана арткы аягы деп аталган жок дегенде эки фазага ээ, ал эми алар бир же көп өтүү болушу мүмкүн. Фаза компиляторлорду конструкциясына жараша классификациялоо үчүн колдонулат, ал эми pass компиляторлорду иштөө ыкмасына жараша классификациялоо үчүн колдонулат.

Сунушталууда: