Ասեմբլերն ընդդեմ թարգմանչի
Ընդհանուր առմամբ, կոմպիլյատորը համակարգչային ծրագիր է, որը կարդում է մի լեզվով գրված ծրագիր, որը կոչվում է սկզբնաղբյուր, և այն թարգմանում է մեկ այլ լեզվով, որը կոչվում է նպատակային լեզու: Ավանդաբար, սկզբնաղբյուր լեզուն բարձր մակարդակի լեզու է, ինչպիսին է C++-ը, իսկ թիրախային լեզուն ցածր մակարդակի լեզու է, ինչպիսին է ասամբլեայի լեզուն: Այնուամենայնիվ, կան կոմպիլյատորներ, որոնք կարող են փոխակերպել սկզբնաղբյուր ծրագիրը, որը գրված է Assembly լեզվով և այն վերածել մեքենայի կոդի կամ օբյեկտի կոդի։ Նման գործիքներ են հավաքողները: Մյուս կողմից, թարգմանիչները գործիքներ են, որոնք կատարում են ծրագրավորման որոշ լեզվով գրված հրահանգներ:Թարգմանիչը կարող է կա՛մ ուղղակիորեն կատարել բարձր մակարդակի սկզբնական կոդը, կա՛մ թարգմանել դրանք միջանկյալ կոդով, այնուհետև մեկնաբանել այն կամ կատարել նախապես կազմված կոդը:
Ի՞նչ է Ասեմբլերը:
Assembler-ը ծրագրաշար է կամ գործիք, որը թարգմանում է Assembly լեզուն մեքենայի կոդ: Այսպիսով, assembler-ը կոմպիլյատորի տեսակ է, և սկզբնական կոդը գրված է Assembly լեզվով։ Ասամբլեան մարդու համար ընթեռնելի լեզու է, բայց այն սովորաբար մեկ առ մեկ կապ ունի մեքենայի համապատասխան կոդի հետ: Հետևաբար ասեմբլերը կատարում է իզոմորֆ (մեկից մեկ քարտեզագրում) թարգմանություն: Ընդլայնված հավաքիչներն ապահովում են լրացուցիչ հնարավորություններ, որոնք աջակցում են ծրագրի մշակմանը և վրիպազերծման գործընթացներին: Օրինակ, մակրոհավաքիչներ կոչվող անսամբլների տեսակը ապահովում է մակրո հնարավորություն:
Ի՞նչ է թարգմանիչը:
Թարգմանիչը համակարգչային ծրագիր է կամ գործիք, որը կատարում է ծրագրավորման հրահանգներ: Թարգմանիչը կարող է կա՛մ ուղղակիորեն գործարկել սկզբնաղբյուրը, կա՛մ աղբյուրը վերածել միջանկյալ կոդի և կատարել այն ուղղակիորեն, կա՛մ կատարել կոմպիլյատորի կողմից արտադրված նախապես կազմված կոդը (որոշ թարգմանիչ համակարգեր ներառում են կոմպիլյատոր այս առաջադրանքի համար):Լեզուները, ինչպիսիք են Perl-ը, Python-ը, MATLAB-ը և Ruby-ն, ծրագրավորման լեզուների օրինակներ են, որոնք օգտագործում են միջանկյալ կոդ: UCSD Pascal-ը մեկնաբանում է նախապես կազմված կոդը: Լեզուները, ինչպիսիք են Java-ը, BASIC-ը և Samlltalk-ը, սկզբնաղբյուրը կազմում են միջանկյալ կոդի մեջ, որը կոչվում է բայթկոդ և այնուհետև մեկնաբանում այն:
Ո՞րն է տարբերությունը Assembler-ի և Interpreter-ի միջև:
Ասամբլերը կարելի է համարել կոմպիլյատորի հատուկ տեսակ, որը թարգմանում է միայն Assembly լեզուն մեքենայի կոդ: Թարգմանիչները գործիքներ են, որոնք կատարում են որոշ լեզվով գրված հրահանգներ: Թարգմանիչ համակարգերը կարող են ներառել կոմպիլյատոր՝ նախքան մեկնաբանությունը նախօրոք կոդ կազմելու համար, սակայն թարգմանիչը չի կարող կոչվել կոմպիլյատորի հատուկ տեսակ: Ասեմբլերները արտադրում են օբյեկտի կոդ, որը կարող է կապված լինել կապող ծրագրերի միջոցով, որպեսզի գործարկվի մեքենայի վրա, բայց թարգմանիչներից շատերը կարող են ինքնուրույն ավարտել ծրագրի կատարումը: Ասեմբլերը սովորաբար կատարում է մեկից մեկ թարգմանություն, բայց դա ճիշտ չէ թարգմանիչների մեծ մասի համար:Քանի որ ասամբլեայի լեզուն ունի մեկից մեկ քարտեզագրում մեքենայական կոդով, assembler-ը կարող է օգտագործվել կոդ ստեղծելու համար, որն աշխատում է շատ արդյունավետ այն դեպքերում, երբ կատարումը շատ կարևոր է (օրինակ՝ գրաֆիկական շարժիչների, սահմանափակ ապարատային ռեսուրսներով ներդրված համակարգերի համար՝ համեմատած անհատական համակարգչի հետ: ինչպես միկրոալիքային վառարաններ, լվացքի մեքենաներ և այլն): Մյուս կողմից, թարգմանիչները օգտագործվում են, երբ ձեզ անհրաժեշտ է բարձր շարժունակություն: Օրինակ, նույն Java բայթկոդը կարող է գործարկվել տարբեր հարթակներում՝ օգտագործելով համապատասխան թարգմանիչը (JVM):