| Կոմպիլյատորի կառուցումը  |
| --- |
| 
Ընդհանուր թեմաներ |
| * Լեքսիկական վերլուծություն
* Շարահյուսական վերլուծություն
* Ծրագրի կատարում
* Կապերի խմբագրիչ
* Դինամիկ կապերի խմբագրիչ
* Ծրագրի բեռնիչ
* Տրանսլյատոր
* Կոմպիլյատոր
* Դեկոմպիլյատոր
* Կրոսս կոմպիլյատոր
* Դինամիկ կոմպիլյացիա
* JIT-կոմպիլյացիա
* AOT-կոմպիլյացիա
* Ինտերպրետատոր
* Run-time գրադարան
* Ծրագրի կատարման ժամանակ
* Կոմպիլյացիայի ժամանակ
* Ելակոդ
* Օբյեկտային կոդ
* Բայթկոդ
* Մեքենայական կոդ
* Միկրոկոդ
* Բացարձակ կոդ
 |
| * դ
* ք
* խ
 |

**Ծրագրի կատարում**, գործընթաց, որի ժամանակ իրական համակարգիչը կամ վիրտուալ մեքենան իրականացնում է համակարգչային ծրագրի հրամանները։ Մեքենայում կատարվող հրամանները պարզ գործողությունների հաջորդականություն են։ Այդ գործողությունները մեքենայում թողնում են հրամանների իմաստին (սեմանտիկ) համապատասխան հետևանքներ։

Համակարգչային ծրագրերը կարող են կատարվել *փաթեթային ռեժիմում* (անգլ.՝ Batch processing), երբ ծրագրերի հաջորդականությունը համակարգչում կատարվում է առանց մարդու միջամտության, կամ օգտագործողը կարող է հրամաններ մուտքագրել իտերպրետատորի ինտերակտրիվ ռեժիմում։ Այս դեպքում հրամանները պարզ ծրագրեր են, որոնց կատարումը կապված է միմյանց հետ։

*Աշխատացնել* (անգլ.՝ run) տերմինը օգտագործվում է, որպես *կատարում* պրոցեսի հոմանիշ։ «Աշխատացնել» և «կատարել» տերմինների համապատասխան իմաստները վերաբերում են ծրագրի կանչին՝ օգտագործողի որոշակի գործողությունների միջոցով։

Կատարման ենթատեքստ
------------------

 Լեզվի իրականացումը
Կատարման ենթատեքստը (միջավայրը) որոշիչ նշանակություն ունի։ Շատ քիչ ծրագրեր կատարվում են օպերացիոն համակարգ չունեցող մեքենաներում (անգլ.՝ Bare machine)։ Ծրագրերը սովորաբար պարունակաում են բացահայտ կամ ոչ բացահայտ ենթադրություններ՝ կատարման ժամանակ ռեսուրսների գոյության մասին։ Շատ ծրագրեր կատարվում են օպերացիոն համակարգի օգնությամբ, և կատարման ժամանակի գրադարանը (անգլ.՝ Run-time library) սկզբնական լեզվի համար է, որը ապահովում է գործառույթներ, որոնք համակարգիչը չի տրամադրում։

Կատարման ընաթացքը
-----------------

Կատարումից առաջ պետք է ծրագիրը գրել սկզբնական կոդի տեսքով, որը հետո կոմպիլյացվում է կոմպիլյացիայի ժամանակ (անգլ.՝ compile time), դառնալով կատարվող (անգլ.՝  executable) ֆայլ։ Այս կատարվող ֆայլը հիմանականում կանչվում է օպերացիոն համակարգի կողմից, որը բեռնում է ծրագիրը հիշողության մեջ (անգլ.՝ load time), ապա, եթե անհրաժեշտ է, կատարում է կապերի դինամիկ խմբագրում (անգլ.՝ dynamic linking), որից հետո էլ սկսում է կատարումը՝ ղեկավարումը փոխանցելով ծրագրի մուտքի կետին։ Այդ պահից սկսվում է կատարումը (անգլ.՝ Run-time)։ Այնուհետև ծրագիրն աշխատում է մինչև ավարտվելը։

Ինտերպրետատոր
-------------

Հիմնական հոդված՝ ինտերպրետատոր
Ծրագիրը կատարող (անգլ.՝ execute) համակարգը կոչվում է ծրագրի *ինտերպրետատոր*։ Ավելի պարզ ասած՝ ինտերպրետատորը բառացիորեն կատարում է այն, ինչ ծրագիրը «հրահանգում» է։ Այն համեմատվում է լեզվի տրանսլյատորի հետ, որը փոխակերպում է ծրագիրը մի լիզվից մյուսը։ Առավել հաճախ հանդիպող լեզվային տրանսլյատորներից (թարգմանիչներից) է կոմպիլյատորը։ Տրանսլյատորը սկզբնական, բարձր մակարդակի լեզուն փոխակերպում է ցածր մակարդակի լեզվի՝ պրոցեսորի կողմից ավելի հեշտ և արագ կատարման համար։

 Տրանսլյատորը փոխակերպում է *սկզբնական կոդը* *օբյեկտային կոդի*
Տրանսլյատորները սովորաբար կառուցում է աբստրակտ արդյունք, այսինքն՝ նրա աշխատանքի արդյունքում ստեղծված կոդը վերջնական կատարման համար պատրաստ չէ։ Սովորաբար օպերացիոն համակարգը, մինչև ծրագրի կատարման սկիզբը, փոխակերպում է օբյեկտային կոդը վերջնական կատարվող կոդի։

Ծանոթագրություններ
------------------

1. ↑  Ինչպես է ծրագիրը կատարվում համակարգչում

* 
*