மொழிபெயர்ப்பாளர் என்றால் என்ன? கணிப்பொறி செயல்பாடு மொழி. தொகுப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள். ஒரு எளிய மொழிபெயர்ப்பாளருக்கான அல்காரிதம்

நிரலாக்க மொழிகளின் குறிப்பிட்ட நிறைவேற்றுபவர்கள் மொழிபெயர்ப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள்.

மொழிபெயர்ப்பாளர்ஒரு கணினி அதன் செயலியின் மொழியில் எழுதப்பட்ட நிரல்களை மட்டுமே இயக்க முடியும் என்பதால், ஒரு கணினி நிரல் உள்ளீட்டை இயந்திர மொழியாக மாற்றும் ஒரு நிரலாகும், மேலும் மற்றொரு மொழியில் குறிப்பிடப்பட்ட வழிமுறைகளை இயக்கும் முன் இயந்திர மொழியில் மொழிபெயர்க்க வேண்டும்.

மொழிபெயர்ப்பாளர்- ஒரு நிரல் அல்லது தொழில்நுட்ப வழிமுறையானது ஒரு நிரலை ஒளிபரப்புகிறது.

நிகழ்ச்சியின் ஒளிபரப்பு- நிரலாக்க மொழிகளில் ஒன்றில் வழங்கப்பட்ட ஒரு நிரலை மற்றொரு மொழியில் ஒரு நிரலாக மாற்றுதல், செயல்படுத்தல் முடிவுகளின் அடிப்படையில் முதல் மொழிக்கு சமம். மொழிபெயர்ப்பாளர் பொதுவாக பிழைகளைக் கண்டறிகிறார், அடையாளங்காட்டிகளின் அகராதிகளை உருவாக்குகிறார், அச்சிடுவதற்கான நிரல் உரைகளை உருவாக்குகிறார்.

உள்ளீட்டு நிரல் வழங்கப்படும் மொழி அழைக்கப்படுகிறது அசல்மொழி, மற்றும் நிரல் தன்னை - மூல குறியீடு. வெளியீட்டு மொழி இலக்கு மொழி அல்லது புறநிலைகுறியீடு. மொழிபெயர்ப்பின் நோக்கம் உரையை ஒரு மொழியிலிருந்து மற்றொரு மொழிக்கு மாற்றுவதாகும், இது உரையைப் பெறுபவருக்குப் புரியும். மொழிபெயர்ப்பாளர் நிரல்களின் விஷயத்தில், முகவரியாளர் தொழில்நுட்ப சாதனம்(செயலி) அல்லது மொழிபெயர்ப்பாளர் நிரல்.

மொழிபெயர்ப்பாளர்கள் தொகுப்பாளர்கள் அல்லது மொழிபெயர்ப்பாளர்களாக செயல்படுத்தப்படுகிறார்கள். வேலையைச் செய்வதைப் பொறுத்தவரை, தொகுப்பாளரும் மொழிபெயர்ப்பாளரும் கணிசமாக வேறுபடுகிறார்கள்.

செயலிகளின் மொழி (இயந்திர குறியீடு) குறைந்த அளவில் உள்ளது. நிரல்களை இயந்திர மொழியாக மாற்றும் மொழிபெயர்ப்பாளர், செயலி மூலம் நேரடியாகப் பெறப்பட்டு செயல்படுத்தப்படும் தொகுப்பி.

தொகுப்பாளர்(ஆங்கிலம்) தொகுப்பி- கம்பைலர், சேகரிப்பான்) முழு நிரலையும் படித்து, அதை மொழிபெயர்த்து, நிரலின் முழுமையான பதிப்பை இயந்திர மொழியில் உருவாக்குகிறது, பின்னர் அது செயல்படுத்தப்படுகிறது. கம்பைலரின் முடிவு பைனரி இயங்கக்கூடிய கோப்பு.

கம்பைலரின் நன்மை: நிரல் ஒரு முறை தொகுக்கப்பட்டது மற்றும் ஒவ்வொரு முறையும் செயல்படுத்தப்படும் போது கூடுதல் மாற்றங்கள் தேவையில்லை. அதன்படி, நிரல் தொகுக்கப்பட்ட இலக்கு கணினியில் கம்பைலர் தேவையில்லை. குறைபாடு: ஒரு தனித் தொகுத்தல் படி எழுதுதல் மற்றும் பிழைத்திருத்தம் செய்வதை மெதுவாக்குகிறது மற்றும் சிறிய, எளிய அல்லது ஒருமுறை நிரல்களை இயக்குவதை கடினமாக்குகிறது.

மூல மொழி ஒரு சட்டசபை மொழியாக இருந்தால் (இயந்திர மொழிக்கு நெருக்கமான ஒரு குறைந்த-நிலை மொழி), அத்தகைய மொழியின் தொகுப்பாளர் அழைக்கப்படுகிறது அசெம்பிளர்.

நிரலைப் பயன்படுத்தி செயல்படுத்தப்படும் போது மற்றொரு செயல்படுத்தல் முறை மொழிபெயர்ப்பாளர்ஒளிபரப்பு இல்லை.

மொழிபெயர்ப்பாளர்(ஆங்கிலம்) மொழிபெயர்ப்பாளர்- மொழிபெயர்ப்பாளர், மொழிபெயர்ப்பாளர்) நிரலை வரிக்கு வரியாக மொழிபெயர்த்து செயல்படுத்துகிறது.

மொழிபெயர்ப்பாளர் மென்பொருள் ஒரு இயந்திரத்தை மாதிரியாக்குகிறது, அதன் ஃபெட்ச்-செக்யூட் சுழற்சி இயந்திர வழிமுறைகளில் இல்லாமல், உயர்-நிலை மொழிகளில் உள்ள வழிமுறைகளில் இயங்குகிறது. இந்த மென்பொருள் உருவகப்படுத்துதல் மொழியை செயல்படுத்தும் ஒரு மெய்நிகர் இயந்திரத்தை உருவாக்குகிறது. இந்த அணுகுமுறை அழைக்கப்படுகிறது தூய விளக்கம். தூய விளக்கம் பொதுவாக எளிமையான கட்டமைப்பைக் கொண்ட மொழிகளுக்குப் பயன்படுத்தப்படுகிறது (எடுத்துக்காட்டாக, APL அல்லது Lisp). மொழிபெயர்ப்பாளர்கள் கட்டளை வரி UNIX இல் உள்ள ஸ்கிரிப்ட்களில் அல்லது MS-DOS இல் தொகுதி கோப்புகளில் (.bat) கட்டளைகளை செயலாக்கவும், பொதுவாக தூய விளக்க முறையிலும்.

ஒரு தூய மொழிபெயர்ப்பாளரின் நன்மை: மொழிபெயர்ப்பிற்கான இடைநிலை செயல்கள் இல்லாதது மொழிபெயர்ப்பாளரை செயல்படுத்துவதை எளிதாக்குகிறது மற்றும் உரையாடல் பயன்முறை உட்பட, பயன்படுத்துவதற்கு மிகவும் வசதியாக இருக்கும். தீமை என்னவென்றால், நிரல் செயல்படுத்தப்பட வேண்டிய இலக்கு கணினியில் மொழிபெயர்ப்பாளர் இருக்க வேண்டும். மேலும், ஒரு விதியாக, வேகத்தில் அதிகமாகவோ அல்லது குறைவாகவோ குறிப்பிடத்தக்க இழப்பு உள்ளது. மற்றும் ஒரு தூய மொழிபெயர்ப்பாளரின் சொத்து, ஒரு கட்டளையை (அல்லது வரியை) பிழையுடன் இயக்க முயற்சிக்கும்போது மட்டுமே விளக்கப்பட்ட நிரலில் பிழைகள் கண்டறியப்படுகின்றன, இது ஒரு பாதகமாகவும் நன்மையாகவும் கருதப்படலாம்.

நிரலாக்க மொழிகளைச் செயல்படுத்துவதில் தொகுத்தல் மற்றும் தூய விளக்கம் ஆகியவற்றுக்கு இடையே சமரசங்கள் உள்ளன, மொழிபெயர்ப்பாளர், நிரலை இயக்குவதற்கு முன், அதை ஒரு இடைநிலை மொழியில் (உதாரணமாக, பைட்கோட் அல்லது பி-குறியீடாக) மொழிபெயர்க்கும்போது, ​​விளக்கத்திற்கு மிகவும் வசதியானது (அதாவது, உள்ளமைக்கப்பட்ட மொழிபெயர்ப்பாளருடன் ஒரு மொழிபெயர்ப்பாளரைப் பற்றி நாங்கள் பேசுகிறோம்) . இந்த முறை அழைக்கப்படுகிறது கலப்பு செயல்படுத்தல். பெர்ல் என்பது கலப்பு மொழி செயலாக்கத்திற்கு ஒரு எடுத்துக்காட்டு. இந்த அணுகுமுறை ஒரு கம்பைலர் மற்றும் மொழிபெயர்ப்பாளரின் நன்மைகள் (அதிக செயலாக்க வேகம் மற்றும் பயன்பாட்டின் எளிமை) மற்றும் தீமைகள் (ஒரு நிரலை இடைநிலை மொழியில் மொழிபெயர்த்து சேமிக்க கூடுதல் ஆதாரங்கள் தேவை; இலக்கில் நிரலை இயக்க ஒரு மொழிபெயர்ப்பாளர் வழங்கப்பட வேண்டும். இயந்திரம்). மேலும், கம்பைலரைப் போலவே, ஒரு கலப்பு செயலாக்கம் செயல்படுத்துவதற்கு முன் தேவைப்படுகிறது ஆதாரம்பிழைகள் இல்லை (லெக்சிகல், தொடரியல் மற்றும் சொற்பொருள்).

கணினி வளங்களின் அதிகரிப்பு மற்றும் பல்வேறு வகையான மற்றும் கட்டமைப்புகளின் கணினிகளை இணைக்கும் பன்முக நெட்வொர்க்குகளின் (இணையம் உட்பட) விரிவாக்கத்துடன், ஒரு புதிய வகை விளக்கம் உருவாகியுள்ளது, இதில் மூல (அல்லது இடைநிலை) குறியீடு நேரடியாக இயக்க நேரத்தில் இயந்திரக் குறியீட்டில் தொகுக்கப்படுகிறது. , "பறந்து கொண்டிருக்கிறேன்." ஏற்கனவே தொகுக்கப்பட்ட குறியீட்டின் பிரிவுகள் தற்காலிக சேமிப்பில் வைக்கப்பட்டுள்ளன, இதனால் அவை மீண்டும் அணுகப்படும் போது, ​​அவை மறுதொகுப்பு இல்லாமல் உடனடியாக கட்டுப்பாட்டைப் பெறுகின்றன. இந்த அணுகுமுறை அழைக்கப்படுகிறது மாறும் தொகுப்பு.

டைனமிக் தொகுப்பின் நன்மை என்னவென்றால், நிரல் விளக்கத்தின் வேகம் வழக்கமான தொகுக்கப்பட்ட மொழிகளில் நிரல் செயல்பாட்டின் வேகத்துடன் ஒப்பிடப்படுகிறது, அதே நேரத்தில் நிரல் இலக்கு தளங்களில் இருந்து சுயாதீனமாக ஒரே வடிவத்தில் சேமிக்கப்பட்டு விநியோகிக்கப்படுகிறது. எளிமையான கம்பைலர்கள் அல்லது தூய மொழிபெயர்ப்பாளர்களைக் காட்டிலும் அதிகமான செயல்படுத்தல் சிக்கலானது மற்றும் அதிக ஆதாரத் தேவைகள் ஆகியவை குறைபாடு ஆகும்.

இந்த முறை இணைய பயன்பாடுகளுக்கு நன்றாக வேலை செய்கிறது. அதன்படி, டைனமிக் தொகுப்பு தோன்றியது மற்றும் ஜாவா செயலாக்கங்களில் ஒரு டிகிரி அல்லது மற்றொரு அளவிற்கு ஆதரிக்கப்படுகிறது. நெட் கட்டமைப்பு, பெர்ல், பைதான்.

ஒரு நிரல் தொகுக்கப்பட்டவுடன், நிரலை இயக்க நிரலின் மூலக் குறியீடு அல்லது கம்பைலர் தேவையில்லை. அதே நேரத்தில், ஒவ்வொரு முறை நிரல் தொடங்கப்படும்போதும் மொழிபெயர்ப்பாளரால் செயலாக்கப்பட்ட நிரல் இயந்திர மொழியில் மீண்டும் மொழிபெயர்க்கப்பட வேண்டும். அதாவது, மூல கோப்பு நேரடியாக இயங்கக்கூடியது.

தொகுக்கப்பட்ட நிரல்கள் வேகமாக இயங்குகின்றன, ஆனால் விளக்கப்பட்டவை சரிசெய்யவும் மாற்றவும் எளிதாக இருக்கும்.

ஒவ்வொரு குறிப்பிட்ட மொழியும் தொகுத்தல் அல்லது விளக்கத்தை நோக்கியதாக உள்ளது - அது உருவாக்கப்பட்ட நோக்கத்தைப் பொறுத்து. எடுத்துக்காட்டாக, நிரல் வேகம் முக்கியமான சிக்கலான சிக்கல்களைத் தீர்க்க C++ பொதுவாகப் பயன்படுத்தப்படுகிறது, எனவே இந்த மொழி ஒரு கம்பைலரைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது.

விளக்கப்பட்ட நிரலாக்க மொழிகளில் நிரல்களின் செயல்பாட்டின் அதிக வேகத்தை அடைய, இடைநிலை பைட்கோடுக்கு மொழிபெயர்ப்பைப் பயன்படுத்தலாம். இந்த தந்திரத்தை அனுமதிக்கும் மொழிகள் ஜாவா, பைதான் மற்றும் வேறு சில நிரலாக்க மொழிகள்.

ஒரு எளிய மொழிபெயர்ப்பாளருக்கான அல்காரிதம்:

2. வழிமுறைகளை பகுப்பாய்வு செய்து பொருத்தமான செயல்களைத் தீர்மானிக்கவும்;

3. பொருத்தமான நடவடிக்கைகளை எடுக்கவும்;

4. நிரல் முடிவடையும் நிலையை அடையவில்லை என்றால், பின்வரும் வழிமுறைகளைப் படித்து படி 2 க்குச் செல்லவும்

நிரலாக்க மொழிகளை தொகுக்கப்பட்ட மற்றும் விளக்கமாக பிரிக்கலாம்.

தொகுக்கப்பட்ட மொழியில் ஒரு நிரல், ஒரு சிறப்பு கம்பைலர் நிரலைப் பயன்படுத்தி, அதற்கான வழிமுறைகளின் தொகுப்பாக மாற்றப்படுகிறது (தொகுக்கப்பட்டது). இந்த வகைசெயலி (இயந்திர குறியீடு) பின்னர் ஒரு இயங்கக்கூடிய தொகுதியில் எழுதப்பட்டது, இது ஒரு தனி நிரலாக செயல்படுத்துவதற்கு தொடங்கப்படலாம். வேறு வார்த்தைகளில் கூறுவதானால், கம்பைலர் நிரல் மூலக் குறியீட்டை உயர் நிலை நிரலாக்க மொழியிலிருந்து செயலி வழிமுறைகளின் பைனரி குறியீடுகளாக மொழிபெயர்க்கிறது.

ஒரு நிரல் விளக்கப்பட்ட மொழியில் எழுதப்பட்டால், மொழிபெயர்ப்பாளர் முன் மொழிபெயர்ப்பின்றி மூல உரையை நேரடியாக இயக்குகிறார் (விளக்கம் செய்கிறார்). இந்த வழக்கில், நிரல் அசல் மொழியில் உள்ளது மற்றும் மொழிபெயர்ப்பாளர் இல்லாமல் தொடங்க முடியாது. கணினி செயலி என்பது இயந்திர குறியீட்டின் மொழிபெயர்ப்பாளர் என்று நாம் கூறலாம்.

சுருக்கமாக, கம்பைலர் ஒரு நிரலின் மூலக் குறியீட்டை இயந்திர மொழியில் உடனடியாகவும் முழுமையாகவும் மொழிபெயர்த்து, ஒரு தனி இயங்கக்கூடிய நிரலை உருவாக்குகிறது, மேலும் நிரல் இயங்கும் போது மொழிபெயர்ப்பாளர் மூல உரையை இயக்குகிறார்.

தொகுக்கப்பட்ட மற்றும் விளக்கப்பட்ட மொழிகளாகப் பிரிப்பது ஓரளவு தன்னிச்சையானது. எனவே, பாஸ்கல் போன்ற பாரம்பரியமாக தொகுக்கப்பட்ட எந்த மொழிக்கும், நீங்கள் ஒரு மொழிபெயர்ப்பாளரை எழுதலாம். கூடுதலாக, பெரும்பாலான நவீன "தூய்மையான" மொழிபெயர்ப்பாளர்கள் மொழிக் கட்டமைப்பை நேரடியாகச் செயல்படுத்துவதில்லை, மாறாக அவற்றை சில உயர்-நிலை இடைநிலைப் பிரதிநிதித்துவத்தில் தொகுக்கிறார்கள் (எடுத்துக்காட்டாக, மாறி டிஃபரென்சிங் மற்றும் மேக்ரோ விரிவாக்கத்துடன்).

எந்தவொரு விளக்கப்பட்ட மொழிக்கும் ஒரு கம்பைலர் உருவாக்கப்படலாம் - எடுத்துக்காட்டாக, லிஸ்ப் மொழி, பூர்வீகமாக விளக்கப்படுகிறது, எந்த கட்டுப்பாடுகளும் இல்லாமல் தொகுக்கப்படலாம். நிரல் செயலாக்கத்தின் போது உருவாக்கப்பட்ட குறியீட்டை இயக்கத்தின் போது மாறும் வகையில் தொகுக்க முடியும்.

பொதுவாக, தொகுக்கப்பட்ட நிரல்கள் வேகமாக இயங்குகின்றன மற்றும் தேவையில்லை கூடுதல் திட்டங்கள், அவை ஏற்கனவே இயந்திர மொழியில் மொழிபெயர்க்கப்பட்டிருப்பதால். அதே நேரத்தில், ஒவ்வொரு முறையும் நிரல் உரை மாற்றப்படும்போது, ​​அது மீண்டும் தொகுக்கப்பட வேண்டும், இது வளர்ச்சியின் போது சிரமங்களை உருவாக்குகிறது. கூடுதலாக, தொகுக்கப்பட்ட நிரலை ஒரே மாதிரியான கணினியில் மட்டுமே செயல்படுத்த முடியும், பொதுவாக அதே இயக்க முறைமையின் கீழ், கம்பைலர் வடிவமைக்கப்பட்டது. வேறு வகையான இயந்திரத்திற்கு இயங்கக்கூடிய ஒன்றை உருவாக்க, ஒரு புதிய தொகுப்பு தேவை.

விளக்கப்பட்ட மொழிகளில் சில குறிப்பிட்ட கூடுதல் அம்சங்கள் உள்ளன (மேலே காண்க), கூடுதலாக, அவற்றில் உள்ள நிரல்களை மாற்றிய பின் உடனடியாக இயக்க முடியும், இது வளர்ச்சியை எளிதாக்குகிறது. விளக்கப்பட்ட மொழியில் ஒரு நிரல் பெரும்பாலும் கூடுதல் முயற்சி இல்லாமல் பல்வேறு வகையான இயந்திரங்கள் மற்றும் இயக்க முறைமைகளில் இயக்கப்படும்.

இருப்பினும், விளக்கப்பட்ட நிரல்கள் தொகுக்கப்பட்டவற்றை விட மெதுவாக இயங்குகின்றன, மேலும் கூடுதல் மொழிபெயர்ப்பாளர் நிரல் இல்லாமல் அவற்றை செயல்படுத்த முடியாது.

ஜாவா மற்றும் சி# போன்ற சில மொழிகள் தொகுக்கப்பட்ட மற்றும் விளக்கப்படுவதற்கு இடையில் விழும். அதாவது, நிரல் இயந்திர மொழியில் தொகுக்கப்படவில்லை, ஆனால் குறைந்த-நிலை இயந்திர-சுயாதீன குறியீடு, பைட்கோடு. பைட்கோட் பின்னர் செயல்படுத்தப்படுகிறது மெய்நிகர் இயந்திரம். பைட்கோடை இயக்குவதற்கு விளக்கம் பொதுவாகப் பயன்படுத்தப்படுகிறது, இருப்பினும் நிரலை விரைவுபடுத்த ஜஸ்ட்-இன்-டைம் கம்பைலேஷன் (JIT) ஐப் பயன்படுத்தி நிரல் செயல்பாட்டின் போது அதன் தனிப்பட்ட பகுதிகளை நேரடியாக இயந்திரக் குறியீடாக மொழிபெயர்க்கலாம். ஜாவாவிற்கு, பைட்கோட் மெய்நிகர் செயல்படுத்தப்படுகிறது ஜாவா இயந்திரம்(Java Virtual Machine, JVM), C# -க்கான பொதுவான மொழி இயக்க நேரம்.

இந்த அணுகுமுறை, ஒரு வகையில், மொழிபெயர்ப்பாளர்கள் மற்றும் தொகுப்பாளர்கள் ஆகிய இரண்டின் நன்மைகளையும் பயன்படுத்த உங்களை அனுமதிக்கிறது. மொழிபெயர்ப்பாளர் மற்றும் தொகுப்பாளர் இரண்டையும் கொண்ட அசல் ஃபோர்த் மொழியையும் குறிப்பிடுவது மதிப்பு.

நிரலாக்க மொழியில் எழுதப்பட்ட உரை கணினிக்கு புரியாது என்பதால், அதை இயந்திரக் குறியீடாக மொழிபெயர்க்க வேண்டும். நிரலாக்க மொழியிலிருந்து இயந்திர குறியீட்டு மொழிக்கு ஒரு நிரலின் இந்த மொழிபெயர்ப்பு மொழிபெயர்ப்பு என்று அழைக்கப்படுகிறது, மேலும் இது சிறப்பு நிரல்களால் - மொழிபெயர்ப்பாளர்களால் செய்யப்படுகிறது.

மொழிபெயர்ப்பாளர் - உள்ளீட்டு நிரலாக்க மொழியில் வழங்கப்பட்ட மூல நிரலை மாற்றும் ஒரு சேவை நிரல் வேலை திட்டம், ஒரு பொருள் மொழியில் குறிப்பிடப்படுகிறது.

தற்போது, ​​மொழிபெயர்ப்பாளர்கள் மூன்று முக்கிய குழுக்களாக பிரிக்கப்பட்டுள்ளனர்: அசெம்பிளர்கள், கம்பைலர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள்.

ஒரு அசெம்பிளர் என்பது ஒரு கணினி பயன்பாட்டு நிரலாகும், இது குறியீட்டு கட்டமைப்புகளை இயந்திர மொழி கட்டளைகளாக மாற்றுகிறது. அசெம்ப்லர்களின் ஒரு குறிப்பிட்ட அம்சம் என்னவென்றால், அவர்கள் ஒரு குறியீட்டு அறிவுறுத்தலை ஒரு இயந்திர அறிவுறுத்தலாக வினைச்சொல்லாக மொழிபெயர்க்கிறார்கள். இவ்வாறு, அசெம்பிளி மொழி (ஆட்டோகோட் என்றும் அழைக்கப்படுகிறது) கணினி கட்டளை அமைப்பின் உணர்வை எளிதாக்குவதற்கும் இந்த கட்டளை அமைப்பில் நிரலாக்கத்தை விரைவுபடுத்துவதற்கும் வடிவமைக்கப்பட்டுள்ளது. ஒரு புரோகிராமர் அவர்களின் பைனரி குறியீட்டை விட இயந்திர வழிமுறைகளின் நினைவூட்டல் பதவியை நினைவில் கொள்வது மிகவும் எளிதானது.

அதே நேரத்தில், அசெம்பிளி மொழி, இயந்திர கட்டளைகளின் ஒப்புமைகளுக்கு கூடுதலாக, பல கூடுதல் வழிமுறைகளைக் கொண்டுள்ளது, அவை குறிப்பாக, கணினி வளங்களை நிர்வகித்தல், மீண்டும் மீண்டும் துண்டுகளை எழுதுதல் மற்றும் பல தொகுதி நிரல்களை உருவாக்குதல். எனவே, மொழியின் வெளிப்பாடு ஒரு குறியீட்டு குறியீட்டு மொழியை விட மிகவும் பணக்காரமானது, இது நிரலாக்க செயல்திறனை பெரிதும் மேம்படுத்துகிறது.

கம்பைலர் என்பது மூல நிரலாக்க மொழியில் எழுதப்பட்ட நிரலை இயந்திர மொழியில் மொழிபெயர்க்கும் ஒரு சேவை நிரலாகும். ஒரு அசெம்பிளரைப் போலவே, கம்பைலர் ஒரு நிரலை ஒரு மொழியிலிருந்து மற்றொரு மொழிக்கு மாற்றுகிறது (பெரும்பாலும், ஒரு குறிப்பிட்ட கணினியின் மொழியாக). அதே நேரத்தில், மூல மொழி கட்டளைகள் அமைப்பு மற்றும் இயந்திர மொழி கட்டளைகளிலிருந்து சக்தி ஆகியவற்றில் கணிசமாக வேறுபடுகின்றன. மூல மொழியின் ஒரு கட்டளை 7-10 இயந்திர கட்டளைகளாக மொழிபெயர்க்கப்படும் மொழிகள் உள்ளன. இருப்பினும், ஒவ்வொரு கட்டளையிலும் 100 அல்லது அதற்கு மேற்பட்ட இயந்திரக் கட்டளைகள் இருக்கக்கூடிய மொழிகளும் உள்ளன (எடுத்துக்காட்டாக, ப்ரோலாக்). கூடுதலாக, மூல மொழிகள் பெரும்பாலும் கடுமையான தரவு தட்டச்சுகளைப் பயன்படுத்துகின்றன, அவை அவற்றின் ஆரம்ப விளக்கத்தின் மூலம் மேற்கொள்ளப்படுகின்றன. நிரலாக்கமானது ஒரு அல்காரிதத்தை குறியிடுவதை நம்பாமல், தரவு கட்டமைப்புகள் அல்லது வகுப்புகள் பற்றி கவனமாக சிந்திக்க வேண்டும். அத்தகைய மொழிகளிலிருந்து மொழிபெயர்க்கும் செயல்முறை பொதுவாக தொகுத்தல் என்று அழைக்கப்படுகிறது, மேலும் மூல மொழிகள் பொதுவாக உயர்நிலை நிரலாக்க மொழிகள் (அல்லது உயர் நிலை மொழிகள்) என வகைப்படுத்தப்படுகின்றன. கணினி கட்டளை அமைப்பிலிருந்து ஒரு நிரலாக்க மொழியின் சுருக்கம் குறிப்பிட்ட சிக்கல்களைத் தீர்ப்பதில் கவனம் செலுத்தும் பல்வேறு வகையான மொழிகளை சுயாதீனமாக உருவாக்க வழிவகுத்தது. அறிவியல் கணக்கீடுகள், பொருளாதாரக் கணக்கீடுகள், தரவுத்தளங்களுக்கான அணுகல் மற்றும் பிறவற்றிற்காக மொழிகள் தோன்றியுள்ளன.

மொழிபெயர்ப்பாளர் - ஒரு நிரல் அல்லது சாதனம், இது ஆபரேட்டர் மூலம் ஆபரேட்டர் மொழிபெயர்ப்பு மற்றும் மூல நிரலை செயல்படுத்துகிறது. ஒரு கம்பைலர் போலல்லாமல், ஒரு மொழிபெயர்ப்பாளர் இயந்திர மொழி நிரலை வெளியீட்டாக உருவாக்கவில்லை. மூல மொழியில் ஒரு கட்டளையை அங்கீகரித்தவுடன், அது உடனடியாக அதை செயல்படுத்துகிறது. தொகுப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள் இருவரும் நிரலின் மூலக் குறியீட்டை பகுப்பாய்வு செய்வதற்கு ஒரே முறைகளைப் பயன்படுத்துகின்றனர். ஆனால் மொழிபெயர்ப்பாளர் ஒரு கட்டளையை எழுதிய பிறகு தரவை செயலாக்கத் தொடங்க உங்களை அனுமதிக்கிறது. இது நிரல்களை உருவாக்குதல் மற்றும் பிழைத்திருத்தம் செய்யும் செயல்முறையை மிகவும் நெகிழ்வானதாக்குகிறது. கூடுதலாக, வெளியீட்டு இயந்திரக் குறியீடு இல்லாதது ஒழுங்கீனத்தைத் தவிர்க்க உங்களை அனுமதிக்கிறது வெளிப்புற சாதனங்கள் கூடுதல் கோப்புகள், மற்றும் பரவலாகப் பயன்படுத்தப்படும் நிரலாக்க மொழியில் ஒருமுறை மட்டுமே அதை உருவாக்குவதன் மூலம் மொழிபெயர்ப்பாளரை எந்த இயந்திரக் கட்டமைப்பிற்கும் எளிதாக மாற்றியமைக்க முடியும். எனவே, ஜாவா ஸ்கிரிப்ட் மற்றும் விபி ஸ்கிரிப்ட் போன்ற விளக்க மொழிகள் பரவலாகிவிட்டன. மொழிபெயர்ப்பாளர்களின் குறைபாடு நிரல் செயல்படுத்தலின் குறைந்த வேகம். பொதுவாக, விளக்கப்பட்ட நிரல்கள் நேட்டிவ் புரோகிராம்களை விட 50 முதல் 100 மடங்கு மெதுவாக இயங்கும்.

எமுலேட்டர் என்பது ஒரு நிரல் அல்லது மென்பொருள் மற்றும் வன்பொருள் கருவியாகும், இது கொடுக்கப்பட்ட கணினியில் இருந்து வேறுபட்ட குறியீடுகள் அல்லது செயல்பாடுகளைச் செய்யும் முறைகளைப் பயன்படுத்தும் நிரலை மறுநிரலாக்கம் இல்லாமல் செயல்படுத்தும் திறனை வழங்குகிறது. ஒரு எமுலேட்டர் ஒரு மொழிபெயர்ப்பாளரைப் போன்றது, அது ஒரு குறிப்பிட்ட மொழியில் எழுதப்பட்ட நிரலை நேரடியாக இயக்குகிறது. இருப்பினும், பெரும்பாலும் இது இயந்திர மொழி அல்லது இடைநிலை குறியீடு. இரண்டும் பைனரி குறியீட்டில் உள்ள வழிமுறைகளைக் குறிக்கின்றன, அவை செயல்பாட்டுக் குறியீடு அங்கீகரிக்கப்பட்ட உடனேயே செயல்படுத்தப்படும். உரை நிரல்களைப் போலன்றி, நிரல் கட்டமைப்பை அங்கீகரிக்க வேண்டிய அவசியமில்லை அல்லது இயக்கங்களைத் தேர்ந்தெடுக்க வேண்டிய அவசியமில்லை.

எமுலேட்டர்கள் பல்வேறு நோக்கங்களுக்காக அடிக்கடி பயன்படுத்தப்படுகின்றன. எடுத்துக்காட்டாக, புதிய கணினி அமைப்புகளை உருவாக்கும்போது, ​​இதுவரை இல்லாத கணினிகளுக்காக உருவாக்கப்பட்ட நிரல்களை இயக்கும் முன்மாதிரி முதலில் உருவாக்கப்படுகிறது. இது கட்டளை அமைப்பை மதிப்பிடவும் அடிப்படையை உருவாக்கவும் உங்களை அனுமதிக்கிறது மென்பொருள்தொடர்புடைய உபகரணங்கள் உருவாக்கப்படுவதற்கு முன்பே.

பெரும்பாலும், புதிய கணினிகளில் பழைய நிரல்களை இயக்க முன்மாதிரி பயன்படுத்தப்படுகிறது. பொதுவாக, புதிய கணினிகள் வேகமானவை மற்றும் சிறந்த சாதனங்களைக் கொண்டுள்ளன. இது பழைய கணினிகளில் இயங்குவதை விட பழைய நிரல்களை மிகவும் திறமையாக பின்பற்ற உங்களை அனுமதிக்கிறது.

டிரான்ஸ்கோடர் என்பது ஒரு கணினியின் இயந்திர மொழியில் எழுதப்பட்ட நிரல்களை மற்றொரு கணினியின் இயந்திர மொழியில் நிரல்களாக மொழிபெயர்க்கும் ஒரு நிரல் அல்லது மென்பொருள் சாதனமாகும். எமுலேட்டர் என்பது மொழிபெயர்ப்பாளரின் குறைவான அறிவாற்றல் அனலாக் என்றால், டிரான்ஸ்கோடர் கம்பைலருடன் தொடர்புடைய அதே திறனில் செயல்படுகிறது. இதேபோல், மூல (மற்றும் பொதுவாக பைனரி) இயந்திரக் குறியீடு அல்லது ஒரு இடைநிலை பிரதிநிதித்துவம் ஒரு ஒற்றை அறிவுறுத்தலுடன் மற்றும் மூல நிரலின் கட்டமைப்பின் பொதுவான பகுப்பாய்வு இல்லாமல் பிற ஒத்த குறியீட்டாக மாற்றப்படுகிறது. ஒரு கணினி கட்டமைப்பிலிருந்து மற்றொன்றுக்கு நிரல்களை மாற்றும் போது டிரான்ஸ்கோடர்கள் பயனுள்ளதாக இருக்கும். தற்போதுள்ள பைனரி குறியீட்டிலிருந்து உயர்நிலை மொழி நிரல் உரையை மறுகட்டமைக்கவும் அவை பயன்படுத்தப்படலாம்.

மேக்ரோப்ராசசர் என்பது ஒரு வரிசை எழுத்துக்களை மற்றொரு வரிசையுடன் மாற்றும் நிரலாகும். இது ஒரு வகை கம்பைலர். மூல உரையில் அமைந்துள்ள சிறப்பு செருகல்களை செயலாக்குவதன் மூலம் இது வெளியீட்டு உரையை உருவாக்குகிறது. இந்த செருகல்கள் ஒரு சிறப்பு வழியில் வடிவமைக்கப்பட்டுள்ளன மற்றும் மேக்ரோலாங்குவேஜ் எனப்படும் மொழியின் கட்டமைப்பைச் சேர்ந்தவை. மேக்ரோப்ராசசர்கள் பெரும்பாலும் நிரலாக்க மொழிகளுக்கான துணை நிரல்களாகப் பயன்படுத்தப்படுகின்றன, இது நிரலாக்க அமைப்புகளின் செயல்பாட்டை அதிகரிக்கிறது. ஏறக்குறைய எந்த அசெம்பிளரும் ஒரு மேக்ரோப்ராசஸரைக் கொண்டுள்ளது, இது இயந்திர நிரல்களை உருவாக்கும் திறனை அதிகரிக்கிறது. இத்தகைய நிரலாக்க அமைப்புகள் பொதுவாக மேக்ரோஅசெம்பிலர்கள் என்று அழைக்கப்படுகின்றன.

மேக்ரோப்ராசசர்கள் உயர்நிலை மொழிகளிலும் பயன்படுத்தப்படுகின்றன. அவை PL/1, C, C++ போன்ற மொழிகளின் செயல்பாட்டை அதிகரிக்கின்றன. மேக்ரோ செயலிகள் குறிப்பாக C மற்றும் C++ இல் பரவலாகப் பயன்படுத்தப்படுகின்றன, இது நிரல்களை எழுதுவதை எளிதாக்குகிறது. மேக்ரோப்ராசசர்கள் மொழியின் தொடரியல் அல்லது சொற்பொருளை மாற்றாமல் நிரலாக்க செயல்திறனை மேம்படுத்துகின்றன.

தொடரியல் என்பது ஒரு மொழியின் கூறுகளின் உருவாக்கத்தை தீர்மானிக்கும் விதிகளின் தொகுப்பாகும். வேறு வார்த்தைகளில் கூறுவதானால், இது கொடுக்கப்பட்ட மொழியில் குறியீடுகளின் சொற்பொருள் முக்கியத்துவம் வாய்ந்த வரிசைகளை உருவாக்குவதற்கான விதிகளின் தொகுப்பாகும். ஒரு மொழியின் கருத்துக்களை விவரிக்கும் விதிகளைப் பயன்படுத்தி தொடரியல் குறிப்பிடப்படுகிறது. கருத்துகளின் எடுத்துக்காட்டுகள்: மாறி, வெளிப்பாடு, ஆபரேட்டர், செயல்முறை. கருத்துகளின் வரிசை மற்றும் விதிகளில் அவற்றின் ஏற்றுக்கொள்ளக்கூடிய பயன்பாடு தொடரியல் ரீதியாக தீர்மானிக்கப்படுகிறது சரியான கட்டமைப்புகள், திட்டங்களை உருவாக்குதல். இது பொருள்களின் படிநிலையாகும், மேலும் அவை எவ்வாறு ஒன்றோடொன்று தொடர்பு கொள்கின்றன என்பது அல்ல, இது தொடரியல் மூலம் வரையறுக்கப்படுகிறது. எடுத்துக்காட்டாக, ஒரு அறிக்கை ஒரு செயல்முறையில் மட்டுமே நிகழும், ஒரு அறிக்கையில் ஒரு வெளிப்பாடு, ஒரு மாறி ஒரு பெயர் மற்றும் விருப்ப குறியீடுகள் போன்றவற்றைக் கொண்டிருக்கும். "இல்லாத லேபிளுக்கு குதித்தல்" அல்லது "கொடுக்கப்பட்ட பெயருடன் ஒரு மாறி வரையறுக்கப்படவில்லை" போன்ற நிரலில் உள்ள நிகழ்வுகளுடன் தொடரியல் தொடர்புபடுத்தப்படவில்லை. இதைத்தான் பொருளியல் செய்கிறது.

சொற்பொருள் - மொழி கூறுகள் மற்றும் அவற்றின் சொற்பொருள் அர்த்தங்களுக்கு இடையிலான உறவுகளை நிர்ணயிக்கும் விதிகள் மற்றும் நிபந்தனைகள், அத்துடன் மொழியின் தொடரியல் கட்டுமானங்களின் அர்த்தமுள்ள அர்த்தத்தின் விளக்கம். ஒரு நிரலாக்க மொழியின் பொருள்கள் ஒரு குறிப்பிட்ட படிநிலைக்கு ஏற்ப உரையில் வைக்கப்படுவது மட்டுமல்லாமல், பல்வேறு சங்கங்களை உருவாக்கும் பிற கருத்துக்கள் மூலமாகவும் ஒன்றோடொன்று இணைக்கப்பட்டுள்ளன. எடுத்துக்காட்டாக, ஒரு மாறி, அதற்கான தொடரியல் அறிவிப்புகள் மற்றும் சில அறிக்கைகளில் மட்டுமே செல்லுபடியாகும் இருப்பிடத்தை வரையறுக்கிறது, ஒரு குறிப்பிட்ட வகை உள்ளது, குறிப்பிட்ட எண்ணிக்கையிலான செயல்பாடுகளுடன் பயன்படுத்தப்படலாம், முகவரி, அளவு மற்றும் அதற்கு முன் அறிவிக்கப்பட வேண்டும். திட்டத்தில் பயன்படுத்தப்படும்.

ஒரு பாகுபடுத்தி என்பது ஒரு கம்பைலர் கூறு ஆகும், இது கொடுக்கப்பட்ட நிரலாக்க மொழியின் தொடரியல் விதிகள் மற்றும் சொற்பொருள்களுடன் இணங்குவதற்கான மூல அறிக்கைகளை சரிபார்க்கிறது. அதன் பெயர் இருந்தபோதிலும், பகுப்பாய்வி தொடரியல் மற்றும் சொற்பொருள் இரண்டையும் சரிபார்க்கிறது. இது பல தொகுதிகளைக் கொண்டுள்ளது, ஒவ்வொன்றும் அதன் சொந்த பிரச்சினைகளை தீர்க்கிறது. மொழிபெயர்ப்பாளரின் கட்டமைப்பை விவரிக்கும் போது இது இன்னும் விரிவாக விவாதிக்கப்படும். மொழிபெயர்ப்பாளர் கம்பைலர் மொழி நிரலாக்கம்

எந்த மொழிபெயர்ப்பாளரும் பின்வரும் முக்கிய பணிகளைச் செய்கிறார்:

  • - மொழிபெயர்க்கப்பட்ட நிரலை பகுப்பாய்வு செய்கிறது, குறிப்பாக அதில் தொடரியல் பிழைகள் உள்ளதா என்பதை தீர்மானிக்கிறது;
  • - இயந்திர கட்டளை மொழியில் வெளியீட்டு நிரலை (பெரும்பாலும் பொருள் நிரல் என்று அழைக்கப்படுகிறது) உருவாக்குகிறது;
  • - பொருள் நிரலுக்கான நினைவகத்தை ஒதுக்குகிறது.1.1 மொழிபெயர்ப்பாளர்கள்

விளக்கச் செயலாக்கத்தின் ஒரு அடிக்கடி மேற்கோள் காட்டப்படும் நன்மை என்னவென்றால், அது "உடனடி பயன்முறையை" அனுமதிக்கிறது. நேரடிப் பயன்முறையானது, PRINT 3.14159*3/2.1 போன்ற சிக்கலைக் கணினியிடம் கேட்க அனுமதிக்கிறது மற்றும் நீங்கள் ENTER ஐ அழுத்தியவுடன் அதற்கான பதிலைத் தருகிறது (இது $3,000 மதிப்புடைய கணினியை $10 கால்குலேட்டராகப் பயன்படுத்த அனுமதிக்கிறது). கூடுதலாக, மொழிபெயர்ப்பாளர்களுக்கு சிறப்புப் பண்புக்கூறுகள் உள்ளன, அவை பிழைத்திருத்தத்தை எளிதாக்குகின்றன. எடுத்துக்காட்டாக, நீங்கள் ஒரு மொழிபெயர்ப்பாளர் நிரலின் செயலாக்கத்தை குறுக்கிடலாம், சில மாறிகளின் உள்ளடக்கங்களைக் காட்டலாம், நிரலைத் தவிர்க்கலாம், பின்னர் செயல்படுத்தலைத் தொடரலாம்.

ப்ரோகிராமர்கள் மொழிபெயர்ப்பாளர்களைப் பற்றி அதிகம் விரும்புவது விரைவான பதிலைப் பெறும் திறன் ஆகும். உங்கள் நிரலில் தலையிட மொழிபெயர்ப்பாளர் எப்போதும் தயாராக இருப்பதால், இங்கே தொகுக்க வேண்டிய அவசியமில்லை. RUN ஐ உள்ளிடவும் மற்றும் முடிவு உங்களுடையது கடைசி மாற்றம்திரையில் தோன்றும்.

இருப்பினும், மொழிபெயர்ப்பாளர் மொழிகளில் தீமைகள் உள்ளன. எடுத்துக்காட்டாக, மொழிபெயர்ப்பாளரின் நகலை எப்போதும் நினைவகத்தில் வைத்திருப்பது அவசியம், அதே நேரத்தில் மொழிபெயர்ப்பாளரின் பல திறன்கள் மற்றும் அதன் திறன்கள் ஒரு குறிப்பிட்ட நிரலின் செயல்பாட்டிற்கு அவசியமில்லை.

மொழிபெயர்ப்பாளர்களின் நுட்பமான குறைபாடு என்னவென்றால், அவர்கள் நல்ல நிரலாக்க பாணியை ஊக்கப்படுத்த முனைகிறார்கள். கருத்துகள் மற்றும் பிற முறைப்படுத்தப்பட்ட விவரங்கள் நிரல் நினைவகத்தில் கணிசமான அளவு எடுத்துக்கொள்வதால், மக்கள் அவற்றைப் பயன்படுத்துவதில்லை. 120K ப்ரோகிராமை 60K மெமரியில் பெற முயற்சிக்கும் மொழிபெயர்ப்பாளரான BASIC இல் பணிபுரியும் ஒரு புரோகிராமரை விட பிசாசுக்கு கோபம் குறைவு. ஆனால் மிக மோசமான விஷயம் என்னவென்றால், மொழிபெயர்ப்பாளர்கள் மெதுவாக நகர்கிறார்கள்.

உண்மையில் வேலையைச் செய்வதற்குப் பதிலாக என்ன செய்ய வேண்டும் என்பதைக் கண்டுபிடிக்க அவர்கள் அதிக நேரத்தை செலவிடுகிறார்கள். நிரல் அறிக்கைகளை இயக்கும் போது, ​​மொழிபெயர்ப்பாளர் முதலில் ஒவ்வொரு அறிக்கையையும் அதன் உள்ளடக்கங்களைப் படிக்க ஸ்கேன் செய்ய வேண்டும் (இவர் என்னிடம் என்ன செய்ய வேண்டும் என்று கேட்கிறார்?) பின்னர் கோரப்பட்ட செயல்பாட்டைச் செய்ய வேண்டும். லூப்களில் உள்ள ஆபரேட்டர்கள் அதிகமாக ஸ்கேன் செய்யப்படுகிறார்கள்.

நிரலைக் கவனியுங்கள்: மொழிபெயர்ப்பாளரில் அடிப்படை 10 க்கு N=1 முதல் 1000 வரை 20 அச்சு N, SQR(N) 30 NEXT N இந்த நிரலின் மூலம் நீங்கள் முதல்முறை செல்லும்போது, ​​அடிப்படை மொழிபெயர்ப்பாளர் வரி 20 என்றால் என்ன என்பதைக் கண்டுபிடிக்க வேண்டும்:

  • 1. எண் மாறி N ஐ சரமாக மாற்றவும்
  • 2. திரைக்கு ஒரு சரத்தை அனுப்பவும்
  • 3. அடுத்த அச்சு பகுதிக்கு செல்லவும்
  • 4. N இன் வர்க்க மூலத்தைக் கணக்கிடுக
  • 5. முடிவை ஒரு சரமாக மாற்றவும்
  • 6. திரைக்கு ஒரு சரத்தை அனுப்பவும்

சுழற்சியின் இரண்டாவது பாஸின் போது, ​​சில மில்லி விநாடிகளுக்கு முன்பு இந்த வரியைப் படித்த அனைத்து முடிவுகளும் முற்றிலும் மறந்துவிட்டதால், இந்த தீர்வு அனைத்தும் மீண்டும் மீண்டும் செய்யப்படுகிறது. மேலும் அனைத்து அடுத்த 998 பாஸ்களுக்கும். தெளிவாக, எப்படியாவது ஸ்கேனிங்/புரிந்துகொள்ளும் கட்டத்தை செயல்படுத்தும் கட்டத்தில் இருந்து பிரிக்க முடிந்தால், உங்களிடம் இன்னும் அதிகமாக இருக்கும் விரைவான திட்டம். இதுவே கம்பைலர்கள்.


4. மொழிபெயர்ப்பாளர்களை உருவாக்குவதற்கான அடிப்படைக் கோட்பாடுகள். மொழிபெயர்ப்பாளர்கள், தொகுப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள் - வேலைக்கான பொதுவான திட்டம். நவீன கம்பைலர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள்.

மொழிபெயர்ப்பாளர்களை உருவாக்குவதற்கான அடிப்படைக் கோட்பாடுகள்.

மொழிபெயர்ப்பாளர்கள், தொகுப்பாளர்கள், உரைபெயர்ப்பாளர்கள் - வேலையின் பொதுவான திட்டம்.

மொழிபெயர்ப்பாளர், தொகுப்பாளர், மொழிபெயர்ப்பாளரின் வரையறை

தொடங்குவதற்கு, சில வரையறைகளை வழங்குவோம் - ஏற்கனவே மீண்டும் மீண்டும் குறிப்பிடப்பட்ட மொழிபெயர்ப்பாளர்கள் மற்றும் தொகுப்பாளர்கள்.

மொழிபெயர்ப்பாளரின் முறையான வரையறை

மொழிபெயர்ப்பாளர்மூல (உள்ளீடு) மொழியில் உள்ள ஒரு உள்ளீட்டு நிரலை அதன் விளைவாக வரும் (வெளியீடு) மொழியில் சமமான வெளியீட்டு நிரலாக மொழிபெயர்க்கும் ஒரு நிரலாகும். இந்த வரையறையில், "நிரல்" என்ற வார்த்தை மூன்று முறை தோன்றும், இது ஒரு பிழை அல்லது டாட்டாலஜி அல்ல. உண்மையில், மூன்று திட்டங்கள் மொழிபெயர்ப்பாளரின் பணியில் எப்போதும் ஈடுபட்டுள்ளன.

முதலில், மொழிபெயர்ப்பாளர் நிரல் 1 - இது பொதுவாக கணினி அமைப்பின் கணினி மென்பொருளின் ஒரு பகுதியாகும். அதாவது, மொழிபெயர்ப்பாளர் என்பது ஒரு மென்பொருளாகும்; இது இயந்திர வழிமுறைகள் மற்றும் தரவுகளின் தொகுப்பாகும், மேலும் இது இயக்க முறைமையில் (OS) உள்ள மற்ற எல்லா நிரல்களையும் போலவே கணினியால் செயல்படுத்தப்படுகிறது. மொழிபெயர்ப்பாளரின் அனைத்து கூறுகளும் நிரல் துண்டுகள் அல்லது அவற்றின் சொந்த உள்ளீடு மற்றும் வெளியீட்டுத் தரவைக் கொண்ட தொகுதிகள்.

இரண்டாவதாக, மொழிபெயர்ப்பாளருக்கான உள்ளீட்டுத் தரவு உள்ளீட்டு நிரலின் உரை - உள்ளீட்டு நிரலாக்க மொழியில் ஒரு குறிப்பிட்ட வரிசை வாக்கியங்கள். இது பொதுவாக ஒரு குறியீட்டு கோப்பு, ஆனால் கோப்பில் உள்ளீட்டு மொழியின் தொடரியல் மற்றும் சொற்பொருள் தேவைகளை பூர்த்தி செய்யும் நிரல் உரை இருக்க வேண்டும். கூடுதலாக, இந்த கோப்பு சில அர்த்தங்களைக் கொண்டுள்ளது, இது உள்ளீட்டு மொழியின் சொற்பொருளால் தீர்மானிக்கப்படுகிறது.

மூன்றாவதாக, மொழிபெயர்ப்பாளரின் வெளியீடு விளைவாக நிரலின் உரை. இதன் விளைவாக நிரல் மொழிபெயர்ப்பாளரின் வெளியீட்டு மொழியில் குறிப்பிடப்பட்ட தொடரியல் விதிகளின்படி கட்டமைக்கப்பட்டுள்ளது, மேலும் அதன் பொருள் வெளியீட்டு மொழியின் சொற்பொருளால் தீர்மானிக்கப்படுகிறது. மொழிபெயர்ப்பாளரை வரையறுப்பதில் முக்கியமான தேவை உள்ளீடு மற்றும் வெளியீட்டு நிரல்களின் சமநிலை ஆகும். இரண்டு நிரல்களின் சமன்பாடு என்பது உள்ளீட்டு மொழியின் சொற்பொருள் (மூல நிரலுக்கு) மற்றும் வெளியீட்டு மொழியின் சொற்பொருள் (விளைவான நிரலுக்கு) ஆகியவற்றின் பார்வையில் அவற்றின் அர்த்தத்தின் தற்செயல் என்று பொருள். இந்த தேவையை பூர்த்தி செய்யாமல், மொழிபெயர்ப்பாளர் அனைத்து நடைமுறை அர்த்தத்தையும் இழக்கிறார்.

எனவே, ஒரு மொழிபெயர்ப்பாளரை உருவாக்க, நீங்கள் முதலில் உள்ளீடு மற்றும் வெளியீட்டு மொழிகளைத் தேர்ந்தெடுக்க வேண்டும். உள்ளீட்டு மொழியின் வாக்கியங்களை வெளியீட்டு மொழியின் சமமான வாக்கியங்களாக மாற்றும் பார்வையில், மொழிபெயர்ப்பாளர் மொழிபெயர்ப்பாளராகச் செயல்படுகிறார். எடுத்துக்காட்டாக, ஒரு நிரலை சி மொழியிலிருந்து சட்டசபை மொழிக்கு மொழிபெயர்ப்பது அடிப்படையில் ரஷ்ய மொழியில் இருந்து ஆங்கிலத்திற்கு மொழிபெயர்ப்பதில் இருந்து வேறுபட்டதல்ல, ஒரே வித்தியாசம் என்னவென்றால், மொழிகளின் சிக்கலானது சற்றே வித்தியாசமானது (ஏன் இயற்கையிலிருந்து மொழிபெயர்ப்பாளர்கள் இல்லை. மொழிகள் - "வகைப்படுத்தல்" மொழிகள் மற்றும் இலக்கணங்கள்", அத்தியாயம் 9 ஐப் பார்க்கவும்). எனவே, "மொழிபெயர்ப்பாளர்" என்ற வார்த்தையே (ஆங்கிலம்: மொழிபெயர்ப்பாளர்) "மொழிபெயர்ப்பாளர்" என்று பொருள்படும்.

மொழிபெயர்ப்பாளரின் பணியின் விளைவாக விளைவான நிரலாக இருக்கும், ஆனால் மூல நிரலின் உரை சரியாக இருந்தால் மட்டுமே - உள்ளீட்டு மொழியின் தொடரியல் மற்றும் சொற்பொருள் அடிப்படையில் பிழைகள் இல்லை. மூல நிரல் தவறாக இருந்தால் (குறைந்தது ஒரு பிழையாவது இருந்தால்), மொழிபெயர்ப்பாளரின் முடிவு பிழைச் செய்தியாக இருக்கும் (வழக்கமாக கூடுதல் விளக்கங்கள் மற்றும் மூல நிரலில் பிழையின் இருப்பிடத்தைக் குறிக்கும்). இந்த அர்த்தத்தில், ஒரு மொழிபெயர்ப்பாளர் ஒரு மொழிபெயர்ப்பாளரைப் போன்றவர், எடுத்துக்காட்டாக, ஆங்கிலத்தில் இருந்து, தவறான உரை வழங்கப்பட்டுள்ளது.

வன்பொருளைப் பயன்படுத்தி ஒரு மொழிபெயர்ப்பாளரை செயல்படுத்துவது கோட்பாட்டளவில் சாத்தியமாகும். ஆசிரியர் இத்தகைய முன்னேற்றங்களை எதிர்கொண்டார், ஆனால் அவற்றின் பரவலான நடைமுறை பயன்பாடு தெரியவில்லை. இந்த வழக்கில், மொழிபெயர்ப்பாளரின் அனைத்து கூறுகளும் வன்பொருள் மற்றும் அவற்றின் துண்டுகள் வடிவில் செயல்படுத்தப்படலாம் - பின்னர் அங்கீகாரம் சுற்று முற்றிலும் நடைமுறை செயல்படுத்தலைப் பெறலாம்!

ஒரு தொகுப்பியின் வரையறை.

தொகுப்பாளருக்கும் மொழிபெயர்ப்பாளருக்கும் உள்ள வேறுபாடு

"மொழிபெயர்ப்பாளர்" என்ற கருத்துடன் கூடுதலாக, "தொகுப்பாளர்" என்ற கருத்தும் பரவலாகப் பயன்படுத்தப்படுகிறது.

தொகுப்பி -இது ஒரு மூல நிரலை இயந்திர கட்டளை மொழி அல்லது சட்டசபை மொழியில் சமமான பொருள் நிரலாக மொழிபெயர்க்கும் மொழிபெயர்ப்பாளர்.

எனவே, ஒரு கம்பைலர் ஒரு மொழிபெயர்ப்பாளரிடமிருந்து வேறுபடுகிறது, அதன் விளைவாக வரும் நிரல் எப்போதும் இயந்திரக் குறியீடு அல்லது சட்டசபை மொழியில் எழுதப்பட வேண்டும். இதன் விளைவாக வரும் மொழிபெயர்ப்பாளர் நிரல் பொதுவாக எந்த மொழியிலும் எழுதப்படலாம் - எடுத்துக்காட்டாக, பாஸ்கலில் இருந்து சி வரையிலான நிரல்களின் மொழிபெயர்ப்பாளர் சாத்தியம், அதன்படி, ஒவ்வொரு தொகுப்பாளரும் ஒரு மொழிபெயர்ப்பாளர், ஆனால் நேர்மாறாக இல்லை - ஒவ்வொரு மொழிபெயர்ப்பாளரும் ஒரு தொகுப்பாளராக இருக்க மாட்டார்கள். எடுத்துக்காட்டாக, மேலே குறிப்பிடப்பட்ட பாஸ்கல் முதல் சி வரையிலான மொழிபெயர்ப்பாளர் தொகுப்பி 1 ஆக இருக்காது.

"தொகுப்பாளர்" என்ற வார்த்தையே வந்தது ஆங்கிலச் சொல்"தொகுப்பான்" ("தொகுப்பான்", "இணைப்பான்"). வெளிப்படையாக, இந்த சொல் அதன் தோற்றத்திற்கு மூல நிரல்களின் அடிப்படையில் பொருள் நிரல்களை உருவாக்கும் தொகுப்பாளர்களின் திறனுக்கு கடன்பட்டுள்ளது.

இதன் விளைவாக வரும் கம்பைலர் புரோகிராம் "ஆப்ஜெக்ட் புரோகிராம்" அல்லது "ஆப்ஜெக்ட் கோட்" என்று அழைக்கப்படுகிறது. இது எழுதப்பட்ட கோப்பு பொதுவாக "பொருள் கோப்பு" என்று அழைக்கப்படுகிறது. இதன் விளைவாக வரும் நிரல் இயந்திர கட்டளை மொழியில் உருவாக்கப்பட்டாலும், ஒரு பொருள் நிரல் (பொருள் கோப்பு) மற்றும் இயங்கக்கூடிய நிரல் (இயக்கக்கூடிய கோப்பு) ஆகியவற்றுக்கு இடையே குறிப்பிடத்தக்க வேறுபாடு உள்ளது. ஒரு கம்பைலரால் உருவாக்கப்பட்ட ஒரு நிரலை நேரடியாக கணினியில் செயல்படுத்த முடியாது, ஏனெனில் அது அதன் குறியீடு மற்றும் தரவு அமைந்துள்ள ஒரு குறிப்பிட்ட நினைவகப் பகுதியுடன் இணைக்கப்படவில்லை (மேலும் விவரங்களுக்கு, "நிரலாக்க அமைப்புகளின் செயல்பாட்டுக் கோட்பாடுகள்" என்ற பகுதியைப் பார்க்கவும். 15) 2.

தொகுப்பாளர்கள், நிச்சயமாக, மிகவும் பொதுவான வகை மொழிபெயர்ப்பாளர்கள் (இது உண்மையல்ல என்றாலும், பலர் அவர்களை ஒரே வகை மொழிபெயர்ப்பாளர் என்று கருதுகின்றனர்). அவை பரந்த நடைமுறை பயன்பாட்டைக் கொண்டுள்ளன, இது அனைத்து வகையான நிரலாக்க மொழிகளின் பரவலான பயன்பாட்டின் காரணமாகும். பின்வருவனவற்றில், வெளியீட்டு நிரல் எழுதப்பட்டிருப்பதைக் குறிக்கும் வகையில், கம்பைலர்களைப் பற்றி எப்போதும் பேசுவோம்

இயற்கையாகவே, மொழிபெயர்ப்பாளர்கள் மற்றும் தொகுப்பாளர்கள், மற்ற எல்லா நிரல்களையும் போலவே, ஒரு நபரால் (மக்கள்) உருவாக்கப்படுகிறார்கள் - பொதுவாக டெவலப்பர்களின் குழு. கொள்கையளவில், அவர்கள் அதை நேரடியாக இயந்திர கட்டளை மொழியில் உருவாக்க முடியும், ஆனால் நவீன கம்பைலர்களின் குறியீடு மற்றும் தரவுகளின் அளவு, அவற்றை இயந்திர கட்டளை மொழியில் உருவாக்குவது ஒரு நியாயமான நேரத்திலும் நியாயமான தொழிலாளர் செலவிலும் நடைமுறையில் சாத்தியமற்றது. எனவே, கிட்டத்தட்ட அனைத்து நவீன கம்பைலர்களும் கம்பைலர்களைப் பயன்படுத்தி உருவாக்கப்படுகின்றன (வழக்கமாக அதே உற்பத்தியாளரின் முந்தைய பதிப்புகள் இந்த பாத்திரத்தை வகிக்கின்றன). இந்த திறனில், கம்பைலர் ஏற்கனவே மற்றொரு கம்பைலருக்கான வெளியீட்டு நிரலாகும், இது மற்ற அனைத்து உருவாக்கப்படும் வெளியீட்டு நிரல்களை விட சிறந்தது அல்லது மோசமானது அல்ல.

மொழிபெயர்ப்பாளரின் வரையறை. மொழிபெயர்ப்பாளர்களுக்கும் மொழிபெயர்ப்பாளர்களுக்கும் உள்ள வேறுபாடு

"மொழிபெயர்ப்பாளர்" மற்றும் "தொகுப்பாளர்" போன்ற ஒத்த கருத்துக்களுக்கு கூடுதலாக, மொழிபெயர்ப்பாளரின் அடிப்படையில் வேறுபட்ட கருத்து உள்ளது.

மொழிபெயர்ப்பாளர் -இது ஒரு உள்ளீட்டு நிரலை மூல மொழியில் எடுத்து அதை இயக்கும் ஒரு நிரலாகும்.

மொழிபெயர்ப்பாளர்களைப் போலல்லாமல், மொழிபெயர்ப்பாளர்கள் ஒரு விளைவான நிரலை (அல்லது அதன் விளைவாக வரும் குறியீட்டை) உருவாக்குவதில்லை - இது அவர்களுக்கு இடையேயான அடிப்படை வேறுபாடு. மொழிபெயர்ப்பாளர், மொழிபெயர்ப்பாளரைப் போலவே, மூல நிரலின் உரையை பகுப்பாய்வு செய்கிறார். இருப்பினும், இது விளைந்த நிரலை உருவாக்காது, ஆனால் உள்ளீட்டு மொழியின் சொற்பொருளால் கொடுக்கப்பட்ட அதன் அர்த்தத்திற்கு ஏற்ப அசல் ஒன்றை உடனடியாக செயல்படுத்துகிறது. எனவே, மொழிபெயர்ப்பாளரின் முடிவு, இந்த நிரல் சரியாக இருந்தால், மூல நிரலின் பொருளால் குறிப்பிடப்பட்ட முடிவு அல்லது மூல நிரல் தவறாக இருந்தால் பிழை செய்தியாக இருக்கும்.

நிச்சயமாக, மூல நிரலை இயக்க, மொழிபெயர்ப்பாளர் அதை எப்படியாவது இயந்திர குறியீட்டு மொழியாக மாற்ற வேண்டும், இல்லையெனில் கணினியில் நிரல்களை இயக்க முடியாது. அவர் இதைச் செய்கிறார், ஆனால் இதன் விளைவாக வரும் இயந்திரக் குறியீடுகளை அணுக முடியாது - அவை மொழிபெயர்ப்பாளரின் பயனருக்குத் தெரியாது. இந்த இயந்திர குறியீடுகள் மொழிபெயர்ப்பாளரால் உருவாக்கப்பட்டு, செயல்படுத்தப்பட்டு அழிக்கப்படுகின்றன.

1 இப்போது நவீன நிரலாக்க அமைப்புகளில் கம்பைலர்கள் தோன்றத் தொடங்கியுள்ளன என்பதை குறிப்பாகக் குறிப்பிட வேண்டும், இதன் விளைவாக நிரல் இயந்திர கட்டளை மொழி அல்லது சட்டசபை மொழியில் அல்ல, ஆனால் சில இடைநிலை மொழியில் உருவாக்கப்படுகிறது. இந்த இடைநிலை மொழியை ஒரு கணினியில் நேரடியாக இயக்க முடியாது, ஆனால் அதில் எழுதப்பட்ட நிரல்களை இயக்க ஒரு சிறப்பு இடைநிலை மொழிபெயர்ப்பாளர் தேவை. இந்த வழக்கில் "மொழிபெயர்ப்பாளர்" என்ற சொல் மிகவும் சரியாக இருக்கலாம் என்றாலும், "தொகுப்பாளர்" என்ற சொல் இலக்கியத்தில் பயன்படுத்தப்படுகிறது, ஏனெனில் ஒரு இடைநிலை மொழி மிகவும் குறைந்த-நிலை மொழியாகும், இது இயந்திர வழிமுறைகள் மற்றும் சட்டசபை மொழிகளுக்கு ஒத்ததாகும்.

இங்குதான் வயது முதிர்ந்த “கோழியும் முட்டையும்” என்ற கேள்வி எழுகிறது. நிச்சயமாக, முதல் தலைமுறையில், முதல் தொகுப்பிகள் இயந்திர வழிமுறைகளில் நேரடியாக எழுதப்பட்டன, ஆனால் பின்னர், கம்பைலர்களின் வருகையுடன், அவர்கள் இந்த நடைமுறையிலிருந்து விலகினர். கம்பைலர்களின் மிக முக்கியமான பகுதிகள் கூட, குறைந்தபட்சம், சட்டசபை மொழியைப் பயன்படுத்தி உருவாக்கப்படுகின்றன - மேலும் இது கம்பைலரால் செயலாக்கப்படுகிறது. தேவைக்கேற்ப தனிப்பயனாக்கப்படுகின்றன - ஒரு குறிப்பிட்ட செயலாக்கத்தின் தேவைக்கேற்ப) மொழிபெயர்ப்பாளரின். இந்த குறியீடுகளை இயக்குவதன் முடிவைப் பயனர் பார்க்கிறார் - இது மூல நிரலை இயக்குவதன் விளைவாகும் (மூல நிரல் மற்றும் இந்த வழக்கில் உருவாக்கப்பட்ட இயந்திர குறியீடுகளின் சமநிலைக்கான தேவை, (நிபந்தனையுடன், பூர்த்தி செய்யப்பட வேண்டும்).

மொழிபெயர்ப்பாளர்களை செயல்படுத்துவது மற்றும் தொகுப்பாளர்களிடமிருந்து அவற்றின் வேறுபாடு தொடர்பான சிக்கல்கள் தொடர்புடைய பிரிவில் மேலும் விரிவாக விவாதிக்கப்படுகின்றன.

மொழிபெயர்ப்பாளர்கள், தொகுப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்களின் நோக்கம். அமலாக்க எடுத்துக்காட்டுகள்

முதல் தலைமுறை கணினிகளுக்காக உருவாக்கப்பட்ட முதல் நிரல்கள் நேரடியாக இயந்திர குறியீட்டு மொழியில் எழுதப்பட்டன. இது உண்மையிலேயே ஒரு நரக வேலை. ஒரு நபர் கணினி நிபுணராக இருந்தாலும், இயந்திர கட்டளைகளின் மொழியைப் பேசக்கூடாது, பேசக்கூடாது என்பது உடனடியாகத் தெளிவாகியது. பற்றி; இருப்பினும், மனித மொழிகளைப் பேச ஒரு கணினியைக் கற்பிப்பதற்கான அனைத்து முயற்சிகளும் வெற்றிகரமாக உள்ளன, மேலும் அவை வெற்றிபெற வாய்ப்பில்லை (இதற்காக இந்த கையேட்டின் முதல் அத்தியாயத்தில் விவாதிக்கப்பட்ட சில காரணங்கள் உள்ளன).

அப்போதிருந்து, கணினி மென்பொருளின் முழு வளர்ச்சியும் கம்பைலர்களின் தோற்றம் மற்றும் வளர்ச்சியுடன் பிரிக்கமுடியாத வகையில் இணைக்கப்பட்டுள்ளது.

முதல் கம்பைலர்கள் சட்டசபை மொழிகளிலிருந்து தொகுப்பிகள் அல்லது அவை நினைவூட்டல் குறியீடுகள் என்று அழைக்கப்படுகின்றன. நினைவூட்டல் குறியீடுகள் இயந்திர கட்டளைகளின் மொழியின் "பில்கின் இலக்கணத்தை" ஒரு நிபுணருக்கு அதிகமாகவோ அல்லது குறைவாகவோ புரிந்துகொள்ளக்கூடிய இந்த கட்டளைகளுக்கான மோனிக் (பெரும்பாலும் ஆங்கிலம்) குறிப்புகளின் மொழியாக மாற்றியது. (நிரல்கள் தயாரிப்பது ஏற்கனவே மிகவும் எளிதாகிவிட்டது, ஆனால் ஒரு கணினி கூட mnems (அசெம்பிளி மொழி) செயல்படுத்தும் திறன் கொண்டதாக இல்லை; அதன்படி, தொகுப்பிகளை உருவாக்க வேண்டிய அவசியம் ஏற்பட்டது. இந்த தொகுப்பிகள் அடிப்படை, ஆனால் அவை நிரலாக்கத்தில் குறிப்பிடத்தக்க பங்கைக் கொண்டுள்ளன. அமைப்புகள் இன்று, சட்டசபை மொழி மற்றும் தொகுப்பிகள் பற்றிய கூடுதல் விவரங்கள் அதைப் பற்றிய ஒரு கதை உள்ளது: மேலும் பொருத்தமான பிரிவில்.

அடுத்த கட்டம் உயர்மட்ட மொழிகளின் உருவாக்கம். உயர்நிலை மொழிகள் (இவற்றில் பெரும்பாலான நிரலாக்க மொழிகளும் அடங்கும்) முற்றிலும் முறையான மொழிகளுக்கும் மக்களிடையே இயற்கையான தொடர்பு மொழிகளுக்கும் இடையே ஒருவித இடைநிலை இணைப்பைக் குறிக்கின்றன. முதலாவதாக, அவர்கள் மொழியின் வாக்கியங்களின் தொடரியல் கட்டமைப்பின் கடுமையான தவறான தன்மையைப் பெற்றனர், இரண்டாவதாக - சொல்லகராதியின் குறிப்பிடத்தக்க பகுதி, அடிப்படை கட்டுமானங்கள் மற்றும் வெளிப்பாடுகளின் சொற்பொருள் (இயற்கணிதத்திலிருந்து வந்த கணித செயல்பாடுகளின் கூறுகளுடன்).

உயர்மட்ட மொழிகளின் தோற்றம் நிரலாக்க செயல்முறையை கணிசமாக எளிதாக்கியது, இருப்பினும் இது "ஹவுஸ்வைஃப் நிலைக்கு" குறைக்கவில்லை என்றாலும், சில ஆசிரியர்கள் நிரலாக்க மொழிகளின் விடியலில் திமிர்பிடித்ததாகக் கூறினர் 1 . இதுபோன்ற சில மொழிகள் மட்டுமே இருந்தன, பின்னர் டஜன் கணக்கானவை, இப்போது அவற்றில் நூற்றுக்கும் மேற்பட்டவை உள்ளன. இந்த செயல்முறைக்கு முடிவே இல்லை. ஆயினும்கூட, பாரம்பரிய "நியூமன்" கட்டிடக்கலையின் கணினிகள் இன்னும் ஆதிக்கம் செலுத்துகின்றன, இது இயந்திர வழிமுறைகளை மட்டுமே புரிந்து கொள்ள முடியும், எனவே கம்பைலர்களை உருவாக்கும் சிக்கல் தொடர்கிறது.

கம்பைலர்களை உருவாக்குவதற்கான பாரிய தேவை எழுந்தவுடன், ஒரு சிறப்புக் கோட்பாடு உருவாகத் தொடங்கியது. காலப்போக்கில், உருவாக்கப்பட்ட பல கம்பைலர்களில் நடைமுறை பயன்பாடுகளைக் கண்டறிந்தது. கம்பைலர்கள் புதிய மொழிகளுக்கு மட்டுமல்ல, நீண்ட காலமாக அறியப்பட்ட மொழிகளுக்கும் உருவாக்கப்பட்டுள்ளன. பல உற்பத்தியாளர்கள், நன்கு அறியப்பட்ட, புகழ்பெற்ற நிறுவனங்களிலிருந்து (மைக்ரோசாப்ட் அல்லது இன்ப்ரைஸ் போன்றவை) அதிகம் அறியப்படாத ஆசிரியர்களின் குழுக்கள் வரை, மேலும் மேலும் புதிய கம்பைலர் மாதிரிகளை சந்தையில் வெளியிடுகின்றனர். இது பல காரணங்களால் ஏற்படுகிறது, இது கீழே விவாதிக்கப்படும்.

இறுதியாக, கம்பைலர்கள் துறையில் உள்ள பெரும்பாலான கோட்பாட்டு அம்சங்கள் அவற்றின் நடைமுறைச் செயலாக்கத்தைப் பெற்றதால் (இது 60 களின் பிற்பகுதியில் மிக விரைவாக நடந்தது என்று சொல்ல வேண்டும்), தொகுப்பாளர்களின் வளர்ச்சி மனிதர்களுக்கு அவர்களின் நட்பின் பாதையைப் பின்பற்றியது - பயனர், உயர் மட்ட மொழிகளில் நிரல்களை உருவாக்குபவர். இந்த செயல்முறையின் தர்க்கரீதியான முடிவு நிரலாக்க அமைப்புகளை உருவாக்குவதாகும் - மென்பொருள் அமைப்புகள், இது, கம்பைலர்களைத் தவிர, பல தொடர்புடைய மென்பொருள் கூறுகளையும் இணைக்கிறது. தோன்றிய பின்னர், நிரலாக்க அமைப்புகள் விரைவாக சந்தையை வென்றன, இப்போது பெரும்பாலானவை ஆதிக்கம் செலுத்துகின்றன (உண்மையில், தனித்து கம்பைலர்கள் நவீன மென்பொருள் கருவிகளில் அரிதானவை). நவீன நிரலாக்க அமைப்புகள் என்றால் என்ன மற்றும் அவை எவ்வாறு ஒழுங்கமைக்கப்பட்டுள்ளன என்பது பற்றிய தகவலுக்கு, "நவீன நிரலாக்க அமைப்புகள்" என்ற அத்தியாயத்தைப் பார்க்கவும். இப்போதெல்லாம் கம்பைலர்கள் எந்தவொரு கணினி அமைப்பின் ஒருங்கிணைந்த பகுதியாகும். அவற்றின் இருப்பு இல்லாமல், எந்தவொரு பயன்பாட்டு பணியையும் நிரலாக்குவது கடினம், வெறுமனே சாத்தியமற்றது. சிறப்பு கணினி பணிகளின் நிரலாக்கமானது, ஒரு விதியாக, உயர் மட்ட மொழியில் இல்லாவிட்டால் (சி மொழி தற்போது இந்த பாத்திரத்தில் பெரும்பாலும் பயன்படுத்தப்படுகிறது), பின்னர் சட்டசபை மொழியில், எனவே, பொருத்தமான தொகுப்பி பயன்படுத்தப்படுகிறது. இயந்திர குறியீட்டு மொழிகளில் நேரடியாக நிரலாக்கமானது மிகவும் அரிதாகவே நிகழ்கிறது மற்றும் மிகக் குறுகிய சிக்கல்களைத் தீர்க்க மட்டுமே. கம்பைலர்கள் மற்றும் மொழிபெயர்ப்பாளர்களின் எடுத்துக்காட்டு செயலாக்கங்கள் மற்றும் அவை ஏற்கனவே உள்ள மற்றவற்றுடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைப் பற்றிய சில வார்த்தைகள் மென்பொருள். கம்பைலர்கள், பின்னர் காட்டப்படும், பொதுவாக மொழிபெயர்ப்பாளர்களைக் காட்டிலும் செயல்படுத்துவது ஓரளவு எளிமையானது. அவை செயல்திறனிலும் சிறந்தவை - தொகுக்கப்பட்ட குறியீடு எப்போதும் ஒத்த மூல நிரலின் விளக்கத்தை விட வேகமாக செயல்படுத்தப்படும் என்பது வெளிப்படையானது. கூடுதலாக, ஒவ்வொரு நிரலாக்க மொழியும் ஒரு எளிய மொழிபெயர்ப்பாளரை உருவாக்க அனுமதிக்காது. இருப்பினும், உரைபெயர்ப்பாளர்களுக்கு ஒரு குறிப்பிடத்தக்க நன்மை உள்ளது - தொகுக்கப்பட்ட குறியீடு எப்போதுமே அது குறிவைக்கப்பட்ட கணினி அமைப்பின் கட்டமைப்போடு பிணைக்கப்பட்டுள்ளது, மேலும் மூல நிரல் நிரலாக்க மொழியின் சொற்பொருளுடன் மட்டுமே பிணைக்கப்பட்டுள்ளது, இது தரப்படுத்த மிகவும் எளிதானது. இந்த அம்சம் ஆரம்பத்தில் கணக்கில் எடுத்துக்கொள்ளப்படவில்லை. முதல் தொகுப்பாளர்கள் நினைவாற்றல் குறியீடு தொகுப்பிகள். அவர்களின் வழித்தோன்றல்கள் - அசெம்பிளி மொழிகளிலிருந்து நவீன கம்பைலர்கள் - கிட்டத்தட்ட அனைத்து அறியப்பட்ட கணினி அமைப்புகளுக்கும் உள்ளன. அவை மிகவும் கட்டிடக்கலை சார்ந்தவை. பின்னர் FORTRAN, ALGOL-68, PL/1 போன்ற மொழிகளில் இருந்து தொகுப்பிகள் தோன்றின. அவை பணிகளின் தொகுதி செயலாக்கத்துடன் கூடிய பெரிய கணினிகளை இலக்காகக் கொண்டிருந்தன. மேலே உள்ளவற்றில், ஃபோர்ட்ரான் மட்டுமே இன்றுவரை தொடர்ந்து பயன்படுத்தப்படுகிறது, ஏனெனில் இது பல்வேறு நோக்கங்களுக்காக ஏராளமான நூலகங்களைக் கொண்டுள்ளது. பல மொழிகள், பிறந்து, ஒருபோதும் பரவவில்லை - ADA, Modula, Simula ஆகியவை நிபுணர்களின் குறுகிய வட்டத்திற்கு மட்டுமே தெரியும். அதே நேரத்தில் சந்தையில் மென்பொருள் அமைப்புகள்ஒளிமயமான எதிர்காலத்தை எதிர்பார்க்காத மொழி தொகுப்பாளர்களால் ஆதிக்கம் செலுத்தப்படுகிறது. முதலில், இப்போது அது C மற்றும் C++. அவர்களில் முதன்மையானவர் உடன் பிறந்தார் இயக்க முறைமைகள் UNIX என தட்டச்சு செய்து, அதனுடன் சேர்ந்து "சூரியனில் இடம்" வென்றது, பின்னர் மற்ற வகை OS க்கு மாற்றப்பட்டது. இரண்டாவதாக, நன்கு நிரூபிக்கப்பட்ட நடைமுறை அடிப்படையில் பொருள் சார்ந்த நிரலாக்க யோசனைகளை செயல்படுத்துவதற்கான உதாரணத்தை வெற்றிகரமாக உள்ளடக்கியது 1. மிகவும் பரவலான பாஸ்கலையும் நீங்கள் குறிப்பிடலாம், இது பலருக்கு எதிர்பாராத விதமாக, பல்கலைக்கழக சூழலுக்கான முற்றிலும் கல்வி மொழியின் எல்லைக்கு அப்பாற்பட்டது.

மொழிபெயர்ப்பாளர்களின் வரலாறு மிகவும் பணக்காரமாக இல்லை (இன்னும்!). ஏற்கனவே குறிப்பிட்டுள்ளபடி, ஆரம்பத்தில் அவை குறிப்பிடத்தக்க முக்கியத்துவம் கொடுக்கப்படவில்லை, ஏனெனில் கிட்டத்தட்ட எல்லா வகையிலும் அவை தொகுப்பாளர்களை விட தாழ்ந்தவை. விளக்கம் தேவைப்படும் நன்கு அறியப்பட்ட மொழிகளில், அடிப்படையை மட்டுமே குறிப்பிட முடியும், இருப்பினும் மைக்ரோசாப்ட் தயாரித்த விஷுவல் பேசிக் தொகுக்கப்பட்ட செயலாக்கம் இப்போது பெரும்பாலான மக்களுக்குத் தெரியும். இருப்பினும், இப்போது நிலைமை ஓரளவு மாறிவிட்டது, ஏனெனில் நிரல் பெயர்வுத்திறன் மற்றும் அவற்றின் வன்பொருள்-தளம் சுதந்திரம் ஆகியவை இணையத்தின் வளர்ச்சியுடன் பெருகிய முறையில் பொருத்தமானதாகி வருகின்றன. இன்று நன்கு அறியப்பட்ட உதாரணம் ஜாவா மொழி (தொகுப்பு மற்றும் விளக்கத்தை ஒருங்கிணைக்கிறது) மற்றும் அதனுடன் தொடர்புடைய ஜாவாஸ்கிரிப்ட் ஆகும். எல்லாவற்றிற்கும் மேலாக, உலகளாவிய வலையின் விரைவான வளர்ச்சிக்கு உத்வேகம் அளித்த HTTP நெறிமுறையை அடிப்படையாகக் கொண்ட HTML மொழியும் ஒரு விளக்கமான மொழியாகும். ஆசிரியரின் கூற்றுப்படி, புதிய மொழிபெயர்ப்பாளர்களின் தோற்றத்தில் அனைவருக்கும் ஆச்சரியங்கள் இன்னும் காத்திருக்கின்றன, அவற்றில் முதலாவது ஏற்கனவே தோன்றியுள்ளன - எடுத்துக்காட்டாக, சி # மொழி ("சி-ஷார்ப்", ஆனால் எல்லா இடங்களிலும் பெயர் " சி ஷார்ப்”), மைக்ரோசாப்ட் அறிவித்தது.

பற்றி நிரலாக்க மொழிகளின் வரலாறு மற்றும் கம்பைலர் சந்தையின் தற்போதைய நிலை ஆகியவை நீண்ட காலமாக பேசப்படலாம். இந்த கையேட்டின் நோக்கம் இதுவல்ல என்பதால், ஏற்கனவே சொல்லப்பட்டவற்றுடன் நம்மை கட்டுப்படுத்துவது சாத்தியம் என்று ஆசிரியர் கருதுகிறார். ஆர்வமுள்ளவர்கள் இலக்கியத்தைப் பார்க்கவும்.

ஒளிபரப்பு நிலைகள். மொழிபெயர்ப்பாளர் செயல்பாட்டின் பொதுவான திட்டம்

படத்தில். 13.1 கம்பைலரின் பொதுவான திட்டத்தைக் காட்டுகிறது. அதிலிருந்து தெளிவாகிறது ъபொதுவாக, தொகுப்பு செயல்முறை இரண்டு முக்கிய நிலைகளைக் கொண்டுள்ளது - தொகுப்பு மற்றும் பகுப்பாய்வு.

பகுப்பாய்வு கட்டத்தில், மூல நிரலின் உரை அங்கீகரிக்கப்பட்டு, அடையாளங்காட்டி அட்டவணைகள் உருவாக்கப்பட்டு நிரப்பப்படுகின்றன. அதன் வேலையின் விளைவாக நிரலின் ஒரு குறிப்பிட்ட உள் பிரதிநிதித்துவம் தொகுப்பாளருக்கு புரியும்.

தொகுப்பின் கட்டத்தில், நிரலின் உள் பிரதிநிதித்துவம் மற்றும் அடையாளங்காட்டிகளின் அட்டவணையில் (அட்டவணைகள்) உள்ள தகவல்களின் அடிப்படையில், விளைவான நிரலின் உரை உருவாக்கப்படுகிறது. இந்த நிலையின் விளைவு பொருள் குறியீடு.

கூடுதலாக, கம்பைலர் பிழைகளை பகுப்பாய்வு செய்வதற்கும் சரிசெய்வதற்கும் பொறுப்பான ஒரு பகுதியைக் கொண்டுள்ளது, இது மூல நிரலின் உரையில் பிழை இருந்தால், பிழையின் வகை மற்றும் அது எங்கு நிகழ்ந்தது என்பதைப் பற்றி பயனருக்கு முடிந்தவரை முழுமையாக தெரிவிக்க வேண்டும். சிறந்த, கம்பைலர் பயனருக்கு பிழையை சரிசெய்வதற்கான விருப்பத்தை வழங்க முடியும்.

இந்த நிலைகள், தொகுத்தல் கட்டங்கள் எனப்படும் சிறிய நிலைகளைக் கொண்டிருக்கின்றன. தொகுத்தல் கட்டங்களின் கலவை மிகவும் பொதுவான வடிவத்தில் கொடுக்கப்பட்டுள்ளது, அவற்றின் குறிப்பிட்ட செயல்படுத்தல் மற்றும் தொடர்பு செயல்முறை

முதலில், இது மூல நிரலின் மொழிக்கான தீர்வு. பின்னர் அவர் உள்ளீட்டு மொழியின் சின்னங்களின் சங்கிலியை உள்ளீடாகப் பெற வேண்டும், அது மொழிக்குச் சொந்தமானதா என்பதைச் சரிபார்த்து, மேலும், இந்த சங்கிலி கட்டப்பட்ட விதிகளை அடையாளம் காண வேண்டும் (“ஆம்” மற்றும் “இல்லை” என்ற கேள்விக்கான பதில் என்பதால். "சிறிது ஆர்வமில்லை). உள்ளீட்டு மொழி சங்கிலிகளின் ஜெனரேட்டர் பயனர் - உள்ளீட்டு நிரலின் ஆசிரியர் என்பது சுவாரஸ்யமானது.

இரண்டாவதாக, தொகுப்பி என்பது விளைந்த நிரலின் மொழிக்கான ஜெனரேட்டராகும். அவர் வெளியீட்டில் ஓப்ராவின் படி வெளியீட்டு மொழியின் சங்கிலியை உருவாக்க வேண்டும்; லெனரி விதிகள், நோக்கம் கொண்ட இயந்திர அறிவுறுத்தல் மொழி அல்லது மொழி நான்மாதிரி. இந்த சங்கிலியை அங்கீகரிப்பவர், இதன் விளைவாக நிரல் உருவாக்கப்படும் கணினி அமைப்பாக இருக்கும்.

லெக்சிகல் பகுப்பாய்வு(ஸ்கேனர்) என்பது கம்பைலரின் ஒரு பகுதியாகும், இது நிரலை மூல மொழியில் படித்து அவற்றிலிருந்து மூல மொழியின் சொற்களை (டோக்கன்கள்) உருவாக்குகிறது. லெக்சிகல் பகுப்பாய்வியின் உள்ளீடு மூல நிரலின் உரையாகும், மேலும் வெளியீட்டுத் தகவல் பாகுபடுத்தும் கட்டத்தில் கம்பைலருக்கு மேலும் செயலாக்கத்திற்கு மாற்றப்படும். ஒரு கோட்பாட்டுக் கண்ணோட்டத்தில், ஒரு லெக்சிக்கல் பகுப்பாய்வி என்பது கம்பைலரின் கட்டாய, அவசியமான பகுதியாக இல்லை. இருப்பினும், கிட்டத்தட்ட அனைத்து கம்பைலர்களிலும் அதன் இருப்பை தீர்மானிக்கும் காரணங்கள் உள்ளன. மேலும் விவரங்களுக்கு, "லெக்சிகல் அனலைசர்ஸ்" என்ற பகுதியைப் பார்க்கவும். ஸ்கேனர்களை உருவாக்குவதற்கான கோட்பாடுகள்."

பாகுபடுத்துதல்- இது பகுப்பாய்வு கட்டத்தில் கம்பைலரின் முக்கிய பகுதியாகும். லெக்சிகல் பகுப்பாய்வியால் செயலாக்கப்படும் மூல நிரலின் உரையில் தொடரியல் கட்டமைப்புகளின் தேர்வை O செய்கிறது. அதே கட்டத்தில், தொகுப்பி நிரலின் தொடரியல் சரியான தன்மையை சரிபார்க்கிறது. தொடரியல் பாகுபடுத்தி முக்கிய பங்கு வகிக்கிறது - உள்ளீட்டு நிரலாக்க மொழியின் உரை அங்கீகாரத்தின் பங்கு (இந்த அத்தியாயத்தின் "பாகுபடுத்திகள். தொடரியல் கட்டுப்படுத்தப்பட்ட மொழிபெயர்ப்பு" என்ற பகுதியைப் பார்க்கவும்).

சொற்பொருள் பகுப்பாய்வு- இது உள்ளீட்டு மொழியின் சொற்பொருளின் அடிப்படையில் மூல நிரலின் சரியான* உரையைச் சரிபார்க்கும் தொகுப்பியின் பகுதியாகும். KRS நேரடியாக சரிபார்க்கிறது, சொற்பொருள் பகுப்பாய்வு மாற்றத்தை செய்ய வேண்டும்; உள்ளீட்டு மொழியின் சொற்பொருளால் தேவைப்படும் உரைப் பெயர்கள் (உள்ளுறை வகை மாற்று செயல்பாடுகளைச் சேர்ப்பது போன்றவை). Comp இன் பல்வேறு செயலாக்கங்களில். டோர்ஸ், சொற்பொருள் பகுப்பாய்வை தொடரியல்* பாகுபடுத்தும் கட்டத்திலும், ஓரளவு குறியீடு உருவாக்கத்திற்கான தயாரிப்பு கட்டத்திலும் சேர்க்கலாம்.

குறியீட்டை உருவாக்கத் தயாராகிறது- இது விளைவான நிரல் உரையின் தொகுப்புக்கு நேரடியாக தொடர்புடைய பூர்வாங்க செயல்களை தொகுப்பாளர் செய்யும் கட்டமாகும், ஆனால் இன்னும் வெளிநாட்டு மொழியில் உரை உருவாக்கத்திற்கு வழிவகுக்கவில்லை. பொதுவாக, இந்த கட்டத்தில் மொழி கூறுகளை அடையாளம் காண்பது, நினைவக ஒதுக்கீடு, முதலியன தொடர்பான செயல்கள் அடங்கும்.

குறியீடு உருவாக்கம்- இது இலக்கு மொழியின் வாக்கியக் கூறுகளின் கோமாவின் உருவாக்கம் மற்றும் ஒட்டுமொத்த உரையுடன் நேரடியாக தொடர்புடைய ஒரு கட்டமாகும்.

கம்பைலர் பதிப்பைப் பொறுத்து, நிச்சயமாக, மாறுபடலாம். இருப்பினும், ஒரு வடிவத்தில் அல்லது இன்னொரு வடிவத்தில், ஒவ்வொரு குறிப்பிட்ட கம்பைலரில் வழங்கப்பட்ட அனைத்து கட்டங்களும் எப்போதும் இருக்கும்.

ஒட்டுமொத்தமாக கம்பைலர், முறையான மொழிகளின் கோட்பாட்டின் பார்வையில், "இரண்டு வடிவங்களில்" தோன்றி இரண்டு முக்கிய செயல்பாடுகளைச் செய்கிறது. திட்டங்கள். விளைந்த நிரலின் தொகுப்பு கட்டத்தில் இது முக்கிய கட்டமாகும். விளைந்த நிரலின் உரையை நேரடியாக உருவாக்குவதுடன், தலைமுறை பொதுவாக தேர்வுமுறையையும் உள்ளடக்குகிறது - இது ஏற்கனவே உருவாக்கப்பட்ட உரையைச் செயலாக்குவதோடு தொடர்புடைய ஒரு செயல்முறையாகும். சில நேரங்களில் தேர்வுமுறை ஒரு தனி தொகுப்பு கட்டமாக பிரிக்கப்படுகிறது, ஏனெனில் இது விளைவான நிரலின் தரம் மற்றும் செயல்திறனில் குறிப்பிடத்தக்க தாக்கத்தை ஏற்படுத்துகிறது ("குறியீடு உருவாக்கம். குறியீடு உருவாக்கும் முறைகள்" மற்றும் "குறியீடு மேம்படுத்தல். அடிப்படை மேம்படுத்தல் முறைகள்", அத்தியாயம் 14 ஐப் பார்க்கவும்).

அடையாள அட்டவணைகள்(சில நேரங்களில் "சின்ன அட்டவணைகள்" என்று அழைக்கப்படுகிறது) என்பது, மூல நிரலின் கூறுகளைப் பற்றிய தகவல்களைச் சேமிப்பதற்குச் சேவை செய்யும் சிறப்பாக ஒழுங்கமைக்கப்பட்ட தரவுத் தொகுப்புகளாகும். ஒரு குறிப்பிட்ட கம்பைலர் செயலாக்கத்தில் ஒரு அடையாளங்காட்டி அட்டவணை இருக்கலாம் அல்லது பல அட்டவணைகள் இருக்கலாம். மூல நிரலின் கூறுகள், தொகுத்தல் செயல்பாட்டின் போது சேமிக்கப்பட வேண்டிய தகவல்கள், மாறிகள், மாறிலிகள், செயல்பாடுகள் போன்றவை - உறுப்புகளின் தொகுப்பின் குறிப்பிட்ட கலவை பயன்படுத்தப்படும் உள்ளீட்டு நிரலாக்க மொழியைப் பொறுத்தது. "அட்டவணை" என்ற கருத்து, இந்த தரவு சேமிப்பகம் அட்டவணைகள் அல்லது பிற தகவல்களின் வடிவத்தில் துல்லியமாக ஒழுங்கமைக்கப்பட வேண்டும் என்பதைக் குறிக்கவில்லை - அவற்றை ஒழுங்கமைப்பதற்கான சாத்தியமான முறைகள் "அடையாளம் அட்டவணைகள்" என்ற பிரிவில் விரிவாக விவாதிக்கப்படும். அடையாளங்காட்டி அட்டவணைகளின் அமைப்பு."

படத்தில் காட்டப்பட்டுள்ளது. 13.1, தொகுத்தல் செயல்முறையை கட்டங்களாகப் பிரிப்பது முறையான நோக்கங்களுக்காக உதவுகிறது மற்றும் நடைமுறையில் அவ்வளவு கண்டிப்பாக கடைபிடிக்கப்படாமல் போகலாம். இந்த கையேட்டின் துணைப்பிரிவுகளில், வழங்கப்பட்ட தொகுத்தல் கட்டங்களின் தொழில்நுட்ப அமைப்புக்கான பல்வேறு விருப்பங்கள் கருதப்படுகின்றன. அவை எவ்வாறு ஒன்றோடொன்று தொடர்பு கொள்ள முடியும் என்பதையும் சுட்டிக்காட்டுகிறது. இந்த வகையான உறவின் பொதுவான அம்சங்களை மட்டுமே இங்கே கருத்தில் கொள்வோம்.

முதலாவதாக, லெக்சிகல் பகுப்பாய்வு கட்டத்தில், லெக்ஸீம்கள் அடுத்த பாகுபடுத்தும் கட்டத்திற்குத் தேவைப்படும் வரை உள்ளீட்டு நிரல் உரையிலிருந்து பிரித்தெடுக்கப்படுகின்றன. இரண்டாவதாக, கீழே காட்டப்பட்டுள்ளபடி, பாகுபடுத்துதல் மற்றும் குறியீடு உருவாக்கம் ஆகியவை ஒரே நேரத்தில் செய்யப்படலாம். எனவே, இந்த மூன்று தொகுப்பு கட்டங்களும் இணைந்து செயல்பட முடியும், மேலும் குறியீடு உருவாக்கத்திற்கான தயாரிப்பும் அவற்றுடன் இணைந்து செய்யப்படலாம். அடுத்து, முக்கிய தொகுப்பு கட்டங்களை செயல்படுத்துவதற்கான தொழில்நுட்ப சிக்கல்களை நாங்கள் கருதுகிறோம், அவை கருத்துடன் நெருக்கமாக தொடர்புடையவை பத்தியில்.

பத்தியின் கருத்து. மல்டி-பாஸ் மற்றும் சிங்கிள்-பாஸ் கம்பைலர்கள்

ஏற்கனவே குறிப்பிட்டுள்ளபடி, நிரல்களை தொகுக்கும் செயல்முறை பல கட்டங்களைக் கொண்டுள்ளது. உண்மையான கம்பைலர்களில், இந்த கட்டங்களின் கலவை மேலே விவாதிக்கப்பட்டவற்றிலிருந்து சற்று வேறுபடலாம் - அவற்றில் சில கூறுகளாகப் பிரிக்கப்படலாம், மற்றவை, மாறாக, ஒரு கட்டமாக இணைக்கப்படுகின்றன. தொகுத்தல் கட்டங்கள் செயல்படுத்தப்படும் வரிசை வெவ்வேறு கம்பைலர் மாறுபாடுகளுக்கு இடையில் மாறுபடும். ஒரு சந்தர்ப்பத்தில், கம்பைலர் மூல நிரலின் உரையைப் பார்க்கிறார், உடனடியாக அனைத்து தொகுத்தல் கட்டங்களையும் செய்து முடிவைப் பெறுகிறார் - பொருள் குறியீடு. மற்றொரு மாறுபாட்டில், இது மூல உரையில் சில தொகுத்தல் கட்டங்களை மட்டுமே செய்கிறது மற்றும் இறுதி முடிவைப் பெறவில்லை, ஆனால் சில இடைநிலை தரவுகளின் தொகுப்பைப் பெறுகிறது. இந்தத் தரவு மீண்டும் செயலாக்கப்படுகிறது, இது பல முறை மீண்டும் மீண்டும் செய்யப்படலாம்.

உண்மையான கம்பைலர்கள், ஒரு விதியாக, மூல நிரல் உரையின் மொழிபெயர்ப்பை பல பாஸ்களில் செய்கிறார்கள்.

பாதை -வெளிப்புற நினைவகத்திலிருந்து தரவைத் தொகுத்து, அதைச் செயலாக்கி, வேலையின் முடிவை வெளிப்புற நினைவகத்தில் வைப்பதன் மூலம் தொடர்ச்சியான வாசிப்பு செயல்முறை இதுவாகும். பெரும்பாலும், ஒற்றை பாஸ் ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுப்பு கட்டங்களை செயல்படுத்துவதை உள்ளடக்கியது. இடைநிலை பாஸ்களின் விளைவாக மூல நிரலின் உள் பிரதிநிதித்துவம் ஆகும், கடைசி பாஸின் விளைவாக பொருள் நிரல் ஆகும்.

என வெளிப்புற நினைவகம்எந்தவொரு சேமிப்பக ஊடகத்தையும் பயன்படுத்தலாம் - கணினி ரேம், காந்த வட்டு இயக்கிகள், காந்த நாடாக்கள், முதலியன. நவீன கம்பைலர்கள், ஒரு விதியாக, தரவு சேமிப்பிற்காக கணினியின் ரேமை அதிகபட்சமாகப் பயன்படுத்த முயற்சி செய்கின்றன, மேலும் கிடைக்கக்கூடிய நினைவகம் இல்லாதபோது மட்டுமே, வன் காந்த இயக்கிகள் பயன்படுத்தப்படும் வட்டுகள். குறைந்த தரவு பரிமாற்ற வேகம் காரணமாக மற்ற சேமிப்பக ஊடகங்கள் நவீன கம்பைலர்களில் பயன்படுத்தப்படுவதில்லை.

ஒவ்வொரு பாஸும் செயல்படுத்தப்படும்போது, ​​கம்பைலர் அனைத்து முந்தைய பாஸ்களிலிருந்தும் பெறப்பட்ட தகவலை அணுகலாம். ஒரு விதியாக, இது தற்போதைய பாஸிலிருந்து பெறப்பட்ட தகவலை மட்டுமே முதன்மையாகப் பயன்படுத்துகிறது, ஆனால் கொள்கையளவில் இது முந்தைய பாஸ்களிலிருந்து தரவை நிரலின் மூலக் குறியீட்டிற்குத் திரும்பப் பெற முடியும். பாஸ்களை இயக்கும் போது கம்பைலரால் பெறப்பட்ட தகவல்கள் பயனருக்குக் கிடைக்காது. இது ஒன்றில் சேமிக்கப்படுகிறது சீரற்ற அணுகல் நினைவகம், இது மொழிபெயர்ப்பு செயல்முறை முடிந்ததும் கம்பைலரால் வெளியிடப்படுகிறது அல்லது வட்டில் தற்காலிக கோப்புகளாக வடிவமைக்கப்படுகிறது, அவை கம்பைலர் அதன் வேலையை முடித்த பிறகு அழிக்கப்படும். எனவே, கம்பைலருடன் பணிபுரியும் நபர், கம்பைலர் எத்தனை பாஸ்களை செய்கிறார் என்பது கூட தெரியாது - அவர் எப்போதும் மூல நிரலின் உரையையும் அதன் விளைவாக வரும் பொருள் நிரலையும் மட்டுமே பார்க்கிறார். ஆனால் நிகழ்த்தப்பட்ட பாஸ்களின் எண்ணிக்கை முக்கியமானது தொழில்நுட்ப குறிப்புகள்கம்பைலர், புகழ்பெற்ற நிறுவனங்கள் - கம்பைலர் டெவலப்பர்கள் வழக்கமாக அதை தங்கள் தயாரிப்பின் விளக்கத்தில் குறிப்பிடுகின்றனர்.

கம்பைலர்களால் செய்யப்படும் பாஸ்களின் எண்ணிக்கையைக் குறைக்க டெவலப்பர்கள் முயற்சி செய்கிறார்கள் என்பது தெளிவாகிறது. இது கம்பைலரின் வேகத்தை அதிகரிக்கிறது மற்றும் அதற்கு தேவையான நினைவகத்தின் அளவை குறைக்கிறது. ஒரு மூல நிரலை உள்ளீடாக எடுத்து உடனடியாக ஒரு பொருள் நிரலை உருவாக்கும் ஒரு-பாஸ் கம்பைலர் சிறந்தது.

இருப்பினும், பாஸ்களின் எண்ணிக்கையைக் குறைப்பது எப்போதும் சாத்தியமில்லை. தேவையான பாஸ்களின் எண்ணிக்கை முதன்மையாக மூல மொழியின் இலக்கணம் மற்றும் சொற்பொருள் விதிகளால் தீர்மானிக்கப்படுகிறது. மொழி இலக்கணம் மிகவும் சிக்கலானது மற்றும் சொற்பொருள் விதிகள் பரிந்துரைக்கும் அதிக விருப்பங்கள், கம்பைலர் அதிக பாஸ்களைச் செய்வார் (நிச்சயமாக, கம்பைலர் டெவலப்பர்களின் தகுதிகளும் ஒரு பாத்திரத்தை வகிக்கின்றன). எடுத்துக்காட்டாக, பாஸ்கல் மொழியிலிருந்து வரும் தொகுப்பிகள் பொதுவாக சி மொழியிலிருந்து வரும் தொகுப்பிகளை விட வேகமாகச் செயல்படுவது இதனால்தான் - பாஸ்கலின் இலக்கணம் எளிமையானது மற்றும் சொற்பொருள் விதிகள் மிகவும் கடுமையானவை. ஒன்-பாஸ் கம்பைலர்கள் அரிதானவை மற்றும் மிகவும் எளிமையான மொழிகளுக்கு மட்டுமே சாத்தியமாகும். உண்மையான கம்பைலர்கள் பொதுவாக இரண்டு முதல் ஐந்து பாஸ்களைச் செய்கிறார்கள். எனவே, உண்மையான கம்பைலர்கள் மல்டி பாஸ் ஆகும். மிகவும் பொதுவானது இரண்டு மற்றும் மூன்று-பாஸ் கம்பைலர்கள், எடுத்துக்காட்டாக: முதல் பாஸ் லெக்சிகல் பகுப்பாய்வு, இரண்டாவது பாகுபடுத்துதல் மற்றும் சொற்பொருள் பகுப்பாய்வு, மூன்றாவது குறியீடு உருவாக்கம் மற்றும் தேர்வுமுறை (செயல்படுத்தும் விருப்பங்கள், நிச்சயமாக, டெவலப்பரைப் பொறுத்தது). நவீன நிரலாக்க அமைப்புகளில், கம்பைலரின் முதல் பாஸ் (குறியீட்டின் லெக்சிக்கல் பகுப்பாய்வு) பெரும்பாலும் மூல நிரலின் குறியீட்டைத் திருத்துவதற்கு இணையாக செய்யப்படுகிறது (தொகுப்பாளர்களை உருவாக்குவதற்கான இந்த விருப்பம் இந்த அத்தியாயத்தில் பின்னர் விவாதிக்கப்படுகிறது).

மொழிபெயர்ப்பாளர்கள். மொழிபெயர்ப்பாளர்களை உருவாக்குவதற்கான அம்சங்கள்

மொழிபெயர்ப்பாளர்மூல மொழியில் உள்ளீடு நிரலை ஏற்று அதை செயல்படுத்தும் ஒரு நிரலாகும். மேலே குறிப்பிட்டுள்ளபடி, மொழிபெயர்ப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள் மற்றும் தொகுப்பாளர்களுக்கு இடையிலான முக்கிய வேறுபாடு என்னவென்றால், மொழிபெயர்ப்பாளர் விளைவாக நிரலை உருவாக்கவில்லை, ஆனால் அசல் நிரலை வெறுமனே செயல்படுத்துகிறார்.

"மொழிபெயர்ப்பாளர்" போன்ற "மொழிபெயர்ப்பாளர்" என்ற சொல்லுக்கு "மொழிபெயர்ப்பாளர்" என்று பொருள். சொற்களஞ்சியத்தின் பார்வையில், இந்த கருத்துக்கள் ஒத்தவை, ஆனால் முறையான மொழிகள் மற்றும் தொகுப்பின் கோட்பாட்டின் பார்வையில், அவற்றுக்கிடையே ஒரு பெரிய அடிப்படை வேறுபாடு உள்ளது. "மொழிபெயர்ப்பாளர்" மற்றும் "தொகுப்பாளர்" என்ற கருத்துக்கள் கிட்டத்தட்ட பிரித்தறிய முடியாதவை என்றால், அவற்றை "மொழிபெயர்ப்பாளர்" என்ற கருத்துடன் குழப்ப முடியாது.

ஒரு மொழிபெயர்ப்பாளரை செயல்படுத்துவதற்கான எளிய வழி, மூல நிரலை முதலில் முழுவதுமாக இயந்திர வழிமுறைகளாக மொழிமாற்றம் செய்து பின்னர் உடனடியாக செயல்படுத்த வேண்டும். அத்தகைய செயலாக்கத்தில், மொழிபெயர்ப்பாளர், உண்மையில், கம்பைலரில் இருந்து சற்று வித்தியாசமாக இருப்பார், ஒரே வித்தியாசம் என்னவென்றால், இதன் விளைவாக வரும் நிரல் பயனருக்கு கிடைக்காது. அத்தகைய மொழிபெயர்ப்பாளரின் குறைபாடு என்னவென்றால், செயல்படுத்தல் தொடங்கும் முன், முழு மூல நிரலும் தொகுக்கப்படும் வரை பயனர் காத்திருக்க வேண்டும். உண்மையில், அத்தகைய மொழிபெயர்ப்பாளருக்கு எந்த சிறப்பு அர்த்தமும் இருக்காது - இது ஒத்த கம்பைலர் 1 ஐ விட எந்த நன்மையையும் அளிக்காது. எனவே, பெரும்பாலான உரைபெயர்ப்பாளர்கள் மூல நிரலை மொழிபெயர்ப்பாளரின் உள்ளீட்டிற்கு வரும்போது வரிசையாக செயல்படுத்தும் விதத்தில் செயல்படுகிறார்கள். பின்னர் முழு மூல நிரலும் தொகுக்கப்படுவதற்கு பயனர் காத்திருக்க வேண்டியதில்லை. மேலும், அவர் அசல் நிரலை வரிசையாக உள்ளிடலாம் மற்றும் கட்டளைகளை உள்ளிடும்போது அதன் செயல்பாட்டின் முடிவை உடனடியாகக் கவனிக்க முடியும்.

மொழிபெயர்ப்பாளரின் இந்த செயல்பாட்டின் வரிசையுடன், ஒரு குறிப்பிடத்தக்க அம்சம் தோன்றுகிறது, இது கம்பைலரிலிருந்து வேறுபடுத்துகிறது - மொழிபெயர்ப்பாளர் கட்டளைகளை வந்தவுடன் செயல்படுத்தினால், அது மூல நிரலை மேம்படுத்த முடியாது. இதன் விளைவாக, மொழிபெயர்ப்பாளரின் ஒட்டுமொத்த கட்டமைப்பில் தேர்வுமுறை கட்டம் இருக்காது. இல்லையெனில், இது ஒத்த கம்பைலரின் கட்டமைப்பிலிருந்து சிறிது வேறுபடும். கடைசி கட்டத்தில் - குறியீடு உருவாக்கம் - இயந்திர கட்டளைகள் ஆப்ஜெக்ட் கோப்பில் எழுதப்படவில்லை, ஆனால் அவை உருவாக்கப்படும்போது செயல்படுத்தப்படுகின்றன என்பதை மட்டுமே நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும்.

தேர்வுமுறைப் படி இல்லாதது, பல மொழிபெயர்ப்பாளர்களின் மற்றொரு அம்சப் பண்பைத் தீர்மானிக்கிறது: நிரலின் உள் பிரதிநிதித்துவமாக அவை பெரும்பாலும் தலைகீழ் போலிஷ் குறியீட்டைப் பயன்படுத்துகின்றன (பிரிவு "குறியீடு உருவாக்கம். குறியீடு உருவாக்கும் முறைகள்," அத்தியாயம் 14 ஐப் பார்க்கவும்). செயல்பாடுகளைக் குறிக்கும் இந்த வசதியான வடிவம் ஒரே ஒரு குறிப்பிடத்தக்க குறைபாட்டைக் கொண்டுள்ளது - அதை மேம்படுத்துவது கடினம். ஆனால் மொழிபெயர்ப்பாளர்களில் இதுவே தேவையில்லை.

அனைத்து நிரலாக்க மொழிகளும் கட்டளைகளைப் பெறும்போது மூல நிரலை இயக்கக்கூடிய மொழிபெயர்ப்பாளர்களை உருவாக்க அனுமதிக்காது, இதைச் செய்ய, மூல நிரலை ஒரே பாஸில் பாகுபடுத்தும் ஒரு கம்பைலர் இருப்பதை மொழி அனுமதிக்க வேண்டும். கூடுதலாக, செயல்பாடுகள் மற்றும் தரவு கட்டமைப்புகளுக்கான அழைப்புகளை அவற்றின் நேரடி விளக்கத்திற்கு முன் தோன்ற அனுமதித்தால், கட்டளைகள் பெறப்பட்டதாக ஒரு மொழியை விளக்க முடியாது. எனவே, சி மற்றும் பாஸ்கல் போன்ற மொழிகளை இந்த முறையால் விளக்க முடியாது.

ஒரு தேர்வுமுறை படி இல்லாததால், ஒரு மொழிபெயர்ப்பாளரைப் பயன்படுத்தி நிரல் செயல்படுத்தல், ஒத்த கம்பைலரைப் பயன்படுத்துவதை விட குறைவான செயல்திறன் கொண்டது. கூடுதலாக, விளக்கத்துடன், மூல நிரல் ஒவ்வொரு முறை செயல்படுத்தப்படும்போதும் புதிதாகப் பாகுபடுத்தப்பட வேண்டும், அதே நேரத்தில் தொகுக்கும்போது, ​​​​அது ஒரு முறை மட்டுமே பாகுபடுத்தப்படும், அதன் பிறகு பொருள் கோப்பு எப்போதும் பயன்படுத்தப்படும். இதனால், மொழிபெயர்ப்பாளர்கள் எப்போதும் செயல்திறனில் தொகுப்பாளர்களிடம் தோற்றுவிடுகிறார்கள்.

மொழிபெயர்ப்பாளரின் நன்மை என்னவென்றால், நிரல் செயல்படுத்தல் இலக்கு கணினி அமைப்பின் கட்டமைப்பிலிருந்து சுயாதீனமாக உள்ளது. தொகுப்பின் விளைவாக: பொருள் குறியீடு பெறப்படுகிறது, இது எப்போதும் ஒரு குறிப்பிட்ட கட்டிடக்கலை சார்ந்தது. இலக்கு கணினி அமைப்பின் மற்றொரு கட்டமைப்பிற்கு மாற, நிரல் மீண்டும் தொகுக்கப்பட வேண்டும். ஒரு நிரலை விளக்குவதற்கு, நீங்கள் அதன் மூல உரை மற்றும் தொடர்புடைய மொழியிலிருந்து ஒரு மொழிபெயர்ப்பாளரைக் கொண்டிருக்க வேண்டும்.

நீண்ட காலமாக, மொழிபெயர்ப்பாளர்கள் கணிசமாக குறைவாகவே காணப்பட்டனர் எந்ததோலுரிப்பவர்கள். ஒரு விதியாக, ஒப்பீட்டளவில் எளிமையான நிரலாக்க மொழிகளின் வரையறுக்கப்பட்ட வரம்பிற்கு மொழிபெயர்ப்பாளர்கள் இருந்தனர் (அடிப்படை. உயர் செயல்திறன் கொண்ட தொழில்முறை மென்பொருள் மேம்பாட்டுக் கருவிகள் கம்பைலர்களின் அடிப்படையில் உருவாக்கப்பட்டன.

மொழிபெயர்ப்பாளர்களின் வளர்ச்சிக்கு ஒரு புதிய உத்வேகம் உலகளாவிய பரவலால் வழங்கப்பட்டது கணினி நெட்வொர்க்குகள். இத்தகைய நெட்வொர்க்குகளில் தனிப்பட்ட கட்டமைப்பின் கணினிகள் இருக்கலாம், பின்னர் அவை ஒவ்வொன்றிலும் அசல் நிரலின் உரையை ஒரே மாதிரியாக செயல்படுத்துவதற்கான தேவை தீர்க்கமானதாகிறது. எனவே, உலகளாவிய நெட்வொர்க்குகளின் வளர்ச்சி மற்றும் உலகளாவிய வலையின் பரவல் ஆகியவற்றுடன், இணையம் தோன்றியது
நவீன நிரலாக்க அமைப்புகளில், கம்பைலர் மற்றும் மொழிபெயர்ப்பாளர் செயல்பாடுகள் இரண்டையும் இணைக்கும் மென்பொருள் செயலாக்கங்கள் உள்ளன - பயனரின் தேவைகளைப் பொறுத்து, மூல நிரல் தொகுக்கப்படுகிறது அல்லது செயல்படுத்தப்படுகிறது (விளக்கம் செய்யப்பட்டது). கூடுதலாக, சில நவீன நிரலாக்க மொழிகள் வளர்ச்சியின் இரண்டு நிலைகளை உள்ளடக்கியது: முதலில், மூல நிரல் இடைநிலை குறியீட்டில் (சில குறைந்த-நிலை மொழி) தொகுக்கப்படுகிறது, பின்னர் இந்த இடைநிலை மொழியின் மொழிபெயர்ப்பாளரைப் பயன்படுத்தி இந்த தொகுப்பு முடிவு செயல்படுத்தப்படுகிறது. அத்தகைய அமைப்புகளுக்கான விருப்பங்கள் "நவீன நிரலாக்க அமைப்புகள்" அத்தியாயத்தில் இன்னும் விரிவாக விவாதிக்கப்பட்டுள்ளன.

HTML (ஹைபர்டெக்ஸ்ட் மார்க்அப் லாங்குவேஜ்), ஒரு ஹைபர்டெக்ஸ்ட் விளக்க மொழியின் பரவலாகப் பயன்படுத்தப்படும் உதாரணம். இணையத்தின் கிட்டத்தட்ட முழு கட்டமைப்பும் தற்போது அதன் அடிப்படையில் இயங்குகிறது. மற்றொரு உதாரணம் - ஜாவா மொழிகள்மற்றும் ஜாவாஸ்கிரிப்ட் - தொகுத்தல் மற்றும் விளக்கச் செயல்பாடுகளை ஒருங்கிணைக்கிறது. மூல நிரலின் உரை சில இடைநிலை பைனரி குறியீட்டில் தொகுக்கப்பட்டுள்ளது, இது இலக்கு கணினி அமைப்பின் கட்டமைப்பிலிருந்து சுயாதீனமாக உள்ளது; இந்த குறியீடு நெட்வொர்க்கில் விநியோகிக்கப்படுகிறது மற்றும் பெறும் பக்கத்தில் செயல்படுத்தப்படுகிறது - விளக்கப்படுகிறது.

சட்டசபை மொழியிலிருந்து மொழிபெயர்ப்பாளர்கள் ("அசெம்பிளர்கள்")

சட்டசபை மொழி -இது தாழ்ந்த மொழி. இந்த மொழியின் சங்கிலிகளின் கட்டமைப்பு மற்றும் ஒன்றோடொன்று இணைக்கப்பட்ட இலக்கு கணினி அமைப்பின் இயந்திர வழிமுறைகளுக்கு அருகில் உள்ளது, அதன் விளைவாக நிரல் செயல்படுத்தப்பட வேண்டும். அசெம்பிளி மொழியின் பயன்பாடு, டெவலப்பர் இலக்கு கணினி அமைப்பின் வளங்களை (செயலி, ரேம், வெளிப்புற சாதனங்கள் போன்றவை) இயந்திர வழிமுறைகளின் மட்டத்தில் நிர்வகிக்க அனுமதிக்கிறது. மூல சட்டசபை மொழி நிரலில் உள்ள ஒவ்வொரு அறிவுறுத்தலும் தொகுப்பின் விளைவாக ஒரு இயந்திர அறிவுறுத்தலாக மாற்றப்படுகிறது.

அசெம்பிளி மொழியிலிருந்து ஒரு மொழிபெயர்ப்பாளர், நிச்சயமாக, எப்போதும் தொகுப்பாளராக இருப்பார், ஏனெனில் இதன் விளைவாக நிரலின் மொழி இயந்திரக் குறியீடு ஆகும். ஒரு சட்டசபை மொழி மொழிபெயர்ப்பாளர் பெரும்பாலும் "அசெம்பிளர்" அல்லது "அசெம்பிளர் புரோகிராம்" என்று அழைக்கப்படுகிறார்.

அசெம்பிளி மொழியிலிருந்து கம்பைலர்களை செயல்படுத்துதல்

அசெம்பிளி மொழி பொதுவாக இயந்திர வழிமுறைகளுக்கான நினைவூட்டல் குறியீடுகளைக் கொண்டுள்ளது. ஆங்கில மொழி கட்டளை நினைவூட்டல் பெரும்பாலும் பயன்படுத்தப்படுகிறது, ஆனால் சட்டசபை மொழிகளின் பிற வகைகள் உள்ளன (ரஷ்ய மொழி மாறுபாடுகள் உட்பட). அதனால்தான் சட்டசபை மொழி "நினைவூட்டல் குறியீடு மொழி" என்று அழைக்கப்பட்டது (இப்போது இந்த பெயர் நடைமுறையில் பயன்படுத்தப்படவில்லை). ஒவ்வொரு சட்டசபை மொழியிலும் சாத்தியமான அனைத்து கட்டளைகளையும் இரண்டு குழுக்களாகப் பிரிக்கலாம்: முதல் குழுவில் சாதாரண மொழி கட்டளைகள் அடங்கும், அவை மொழிபெயர்ப்பின் போது இயந்திர கட்டளைகளாக மாற்றப்படுகின்றன; இரண்டாவது குழுவில் சிறப்பு மொழி கட்டளைகள் உள்ளன, அவை இயந்திர கட்டளைகளாக மாற்றப்படவில்லை, ஆனால் தொகுத்தல் பணிகளைச் செய்ய கம்பைலரால் பயன்படுத்தப்படுகின்றன (எடுத்துக்காட்டாக, நினைவக ஒதுக்கீடு பணி போன்றவை). மொழியின் தொடரியல் மிகவும் எளிமையானது. மூல நிரலின் கட்டளைகள் பொதுவாக நிரலின் ஒரு வரியில் ஒரு கட்டளை இருக்கும் வகையில் எழுதப்படும். ஒவ்வொரு அசெம்பிளி மொழி அறிவுறுத்தலும், ஒரு விதியாக, மூன்று கூறுகளாகப் பிரிக்கலாம், ஒன்றன் பின் ஒன்றாக தொடர்ச்சியாக: லேபிள்கள், செயல்பாட்டுக் குறியீடு மற்றும் செயல்பாட்டு புலம். வழக்கமான அசெம்பிளி மொழி தொகுப்பி, உள்ளீட்டு நிரலில் உள்ள கருத்துகளை வழங்குவதற்கான சாத்தியக்கூறுகளை வழங்குகிறது, அவை கொடுக்கப்பட்ட டிலிமிட்டரால் கட்டளைகளிலிருந்து பிரிக்கப்படுகின்றன.

லேபிள் புலத்தில் லேபிளைக் குறிக்கும் அடையாளங்காட்டி உள்ளது அல்லது காலியாக உள்ளது. ஒவ்வொரு லேபிள் அடையாளங்காட்டியும் சட்டசபை மொழி நிரலில் ஒருமுறை மட்டுமே தோன்றும். ஒரு குறி அது எங்கே விவரிக்கப்பட்டுள்ளது என்று கருதப்படுகிறது மணிக்குதிட்டத்தில் சாதாரணமாக எதிர்கொண்டது (லேபிள்களின் பூர்வாங்க விளக்கம் தேவை). அது வழங்கிய கட்டளைக்கு கட்டுப்பாட்டை மாற்ற லேபிளைப் பயன்படுத்தலாம். பெரும்பாலும் ஒரு லேபிள் மற்ற கட்டளையிலிருந்து சுழற்சி பிரிப்பான் மூலம் பிரிக்கப்படுகிறது (பெரும்பாலும் ஒரு பெருங்குடல் ":").

செயல்பாட்டுக் குறியீடு எப்போதுமே சாத்தியமான செயலி கட்டளைகளில் ஒன்றின் கண்டிப்பாக வரையறுக்கப்பட்ட நினைவாற்றல் அல்லது கண்டிப்பாக வரையறுக்கப்பட்ட கட்டளை (எனது கம்பைலரின். செயல்பாட்டுக் குறியீடு மொழி மொழியின் அகரவரிசை குறியீடுகளில் எழுதப்பட்டுள்ளது. பெரும்பாலும், அதன் நீளம் 3-4, குறைவாக அடிக்கடி - 5 அல்லது 6 எழுத்துக்கள்.

ஓபராண்ட்ஸ் புலம் காலியாக உள்ளது அல்லது ஒன்று, இரண்டு அல்லது குறைவாக அடிக்கடி மூன்று இயக்கங்களின் பட்டியல். இயக்கங்களின் எண்ணிக்கை கண்டிப்பாக வரையறுக்கப்பட்டுள்ளது மற்றும் செயல்பாட்டுக் குறியீட்டைப் பொறுத்தது - ஒவ்வொரு அசெம்பிளி மொழி செயல்பாடும் கண்டிப்பாக வரையறுக்கப்பட்ட எண்ணிக்கையிலான அதன் செயல்பாடுகளை வழங்குகிறது. அதன்படி, இந்த விருப்பங்கள் ஒவ்வொன்றும் முகவரியற்ற, முகவரியற்ற, இரண்டு-முகவரி அல்லது மூன்று-முகவரி கட்டளைகளுக்கு ஒத்திருக்கிறது (அதிக எண்ணிக்கையிலான ஓபராண்டுகள் நடைமுறையில் பயன்படுத்தப்படுவதில்லை; நவீன கணினிகளில் மூன்று முகவரி கட்டளைகள் கூட அரிதானவை). ஓபராக்களாக; அவை அடையாளங்காட்டிகள் அல்லது மாறிலிகளாக இருக்கலாம்.

அசெம்பிளி மொழியின் ஒரு அம்சம் என்னவென்றால், n இல் உள்ள பல அடையாளங்காட்டிகள் செயலி பதிவேடுகளை நியமிக்க குறிப்பாக ஒதுக்கப்பட்டுள்ளன. அத்தகைய ஃபிகேட்டர்கள், ஒருபுறம், ஒரு பூர்வாங்க விளக்கம் தேவையில்லை, ஆனால், D1 உடன், அவற்றை மற்ற நோக்கங்களுக்காக பயனர் பயன்படுத்த முடியாது. இந்த அடையாளங்காட்டிகளின் தொகுப்பு ஒவ்வொரு சட்டசபை மொழிக்கும் முன் வரையறுக்கப்பட்டுள்ளது.

சில நேரங்களில் அசெம்பிளி மொழியானது சில குறிப்பிட்ட ஆபரேட்டர் அடையாளங்களால் இணைக்கப்பட்ட பதிவு பதவிகள், அடையாளங்காட்டிகள் மற்றும் மாறிலிகளின் சில வரையறுக்கப்பட்ட சேர்க்கைகளின் செயல்பாடுகளாகப் பயன்படுத்த அனுமதிக்கிறது. இத்தகைய சொற்றொடர்கள் பெரும்பாலும் முகவரியிடல் வகைகளைக் குறிக்கப் பயன்படுத்தப்படுகின்றன, எடுத்துக்காட்டாக, இலக்கு கணினி அமைப்பின் இயந்திர வழிமுறைகளில்.

எடுத்துக்காட்டாக, பின்வரும் கட்டளை வரிசை

இது சட்டசபை மொழி கட்டளைகளின் வரிசைக்கு ஒரு எடுத்துக்காட்டு; இன்டெல் 80x86 குடும்பத்தின் செயலிகள். தரவு தொகுப்பு விளக்கக் கட்டளை (db), ஒரு லேபிள் (சுழல்கள்), செயல்பாட்டுக் குறியீடுகள் (mov, dec மற்றும் jnz) உள்ளன. செயல்பாடுகள் தரவு தொகுப்பு அடையாளங்காட்டி (தரவுகள்), செயல்முறை பதிவு பதவிகள் ஆகும்.

(bx மற்றும் cx), லேபிள் (சுழல்கள்) மற்றும் மாறிலி (4). கலப்பு செயல்பாட்டு தரவுகள் ஆஃப்செட் 4 இல் அடிப்படைப் பதிவேடு bx க்கு அமைக்கப்பட்ட தரவுகளின் மறைமுக முகவரிகளை வரைபடமாக்குகிறது.

இத்தகைய மொழி தொடரியல் வழக்கமான இலக்கணத்தைப் பயன்படுத்தி எளிதாக விவரிக்க முடியும். எனவே, சட்டசபை மொழிக்கான அங்கீகாரத்தை உருவாக்குவது கடினம் அல்ல. அதே காரணத்திற்காக, சட்டசபை மொழி தொகுப்பிகளில், லெக்சிகல் மற்றும் தொடரியல் பாகுபடுத்துதல் பொதுவாக ஒரு அங்கீகாரமாக இணைக்கப்படுகிறது.

அசெம்பிளி மொழியின் சொற்பொருள், இந்த மொழி சார்ந்த இலக்கு கணினி அமைப்பால் முற்றிலும் தீர்மானிக்கப்படுகிறது. ஒவ்வொரு சட்டசபை மொழி அறிவுறுத்தலுக்கும் எந்த இயந்திர அறிவுறுத்தல் ஒத்துப்போகிறது என்பதையும், கொடுக்கப்பட்ட ஆப்கோடுக்கு எந்த இயக்கங்கள் மற்றும் எத்தனை அனுமதிக்கப்படுகிறது என்பதையும் சட்டசபை மொழி சொற்பொருள் தீர்மானிக்கிறது.

எனவே, ஒரு சட்டசபை மொழி தொகுப்பியில் சொற்பொருள் பகுப்பாய்வு என்பது தொடரியல் பகுப்பாய்வு போலவே எளிமையானது. ஒவ்வொரு ஆப்கோடுக்கான செயல்பாட்டின் செல்லுபடியை சரிபார்ப்பதும், உள்ளீட்டு நிரலில் உள்ள அனைத்து அடையாளங்காட்டிகள் மற்றும் லேபிள்கள் விவரிக்கப்பட்டுள்ளதா என்பதையும் அவற்றைக் குறிக்கும் அடையாளங்காட்டிகள் ஆப்கோட்கள் மற்றும் செயலி பதிவேடுகளைக் குறிக்கப் பயன்படுத்தப்படும் முன் வரையறுக்கப்பட்ட அடையாளங்காட்டிகளுடன் பொருந்தவில்லையா என்பதையும் சரிபார்ப்பது இதன் முக்கிய பணியாகும்.

அசெம்பிளி மொழி தொகுப்பியில் உள்ள பாகுபடுத்துதல் மற்றும் சொற்பொருள் பகுப்பாய்வு திட்டங்கள் வழக்கமான வரையறுக்கப்பட்ட நிலை இயந்திரத்தின் அடிப்படையில் செயல்படுத்தப்படலாம். இந்த அம்சம்தான் அசெம்பிளி மொழித் தொகுப்பிகள் வரலாற்றில் கணினிகளுக்காக உருவாக்கப்பட்ட முதல் தொகுப்பிகள் என்ற உண்மையைத் தீர்மானித்தது. அசெம்பிளி மொழிகளுக்கு குறிப்பிட்ட மற்றும் அவற்றுக்கான கம்பைலர்களின் கட்டுமானத்தை எளிதாக்கும் பல அம்சங்கள் உள்ளன.

முதலில், அசெம்பிளி மொழி தொகுப்பாளர்களுக்கு மாறிகளின் கூடுதல் அடையாளம் தேவையில்லை - அனைத்து மொழி மாறிகளும் பயனரால் ஒதுக்கப்பட்ட பெயர்களைத் தக்கவைத்துக்கொள்கின்றன. மூல நிரலில் உள்ள பெயர்களின் தனித்தன்மை அதன் டெவலப்பரின் பொறுப்பாகும்; மொழியின் சொற்பொருள் இந்த செயல்பாட்டில் கூடுதல் தேவைகளை விதிக்காது. இரண்டாவதாக, சட்டசபை மொழி தொகுப்பிகளில், நினைவக ஒதுக்கீடு மிகவும் எளிமைப்படுத்தப்பட்டுள்ளது. சட்டசபை மொழி தொகுப்பி நிலையான நினைவகத்துடன் மட்டுமே இயங்குகிறது. டைனமிக் நினைவகம் பயன்படுத்தப்பட்டால், அதனுடன் பணிபுரிய நீங்கள் பொருத்தமான நூலகம் அல்லது OS செயல்பாடுகளைப் பயன்படுத்த வேண்டும், மேலும் அதன் ஒதுக்கீட்டிற்கு மூல நிரலின் டெவலப்பர் பொறுப்பு. மூல நிரல் டெவலப்பர் அளவுருக்களை அனுப்புவதற்கும் செயல்முறை மற்றும் செயல்பாட்டு நினைவக காட்சியை ஒழுங்கமைப்பதற்கும் பொறுப்பானவர். நிரல் குறியீட்டிலிருந்து தரவைப் பிரிப்பதையும் அவர் கவனித்துக் கொள்ள வேண்டும் - ஒரு சட்டசபை மொழி தொகுப்பி, உயர்நிலை மொழிகளிலிருந்து தொகுப்பாளர்களைப் போலன்றி, தானாகவே அத்தகைய பிரிப்பைச் செய்யாது. மூன்றாவதாக, அசெம்பிளி மொழியிலிருந்து கம்பைலரில் குறியீடு உருவாக்கும் கட்டத்தில், தேர்வுமுறை செய்யப்படவில்லை, ஏனெனில் மூல நிரலின் டெவலப்பர் கணக்கீடுகளின் அமைப்பு, இயந்திர வழிமுறைகளின் வரிசை மற்றும் செயலி பதிவேடுகளின் விநியோகம் ஆகியவற்றிற்கு பொறுப்பானவர்.

இந்த அம்சங்களைத் தவிர, அசெம்பிளி மொழி தொகுப்பானது ஒரு வழக்கமான கம்பைலர் ஆகும், ஆனால் எந்த உயர்-நிலை மொழி தொகுப்பாளருடனும் ஒப்பிடும்போது குறிப்பிடத்தக்க வகையில் எளிமைப்படுத்தப்பட்டுள்ளது. அசெம்பிளி மொழி தொகுப்பிகள் பெரும்பாலும் இரண்டு-பாஸ் திட்டத்தைப் பயன்படுத்தி செயல்படுத்தப்படுகின்றன. முதல் பாஸில், கம்பைலர் மூல நிரலைப் பாகுபடுத்தி, அதை இயந்திரக் குறியீடாக மாற்றி, அடையாளங்காட்டி அட்டவணையை ஒரே நேரத்தில் நிரப்புகிறது. ஆனால் இயந்திர வழிமுறைகளில் முதல் பாஸில், RAM இல் அமைந்துள்ள அந்த இயக்கங்களின் முகவரிகள் காலியாக இருக்கும். இரண்டாவது பாஸில், கம்பைலர் இந்த முகவரிகளை நிரப்புகிறது மற்றும் ஒரே நேரத்தில் விவரிக்கப்படாத அடையாளங்காட்டிகளைக் கண்டறியும். ஏனென்றால், ஓபராண்ட் முதல் முறையாகப் பயன்படுத்தப்பட்ட பிறகு நிரலில் அறிவிக்கப்படலாம். இயந்திர அறிவுறுத்தல் கட்டப்பட்ட நேரத்தில் அதன் முகவரி இன்னும் அறியப்படவில்லை, எனவே இரண்டாவது பாஸ் தேவைப்படுகிறது. அத்தகைய செயல்பாட்டின் ஒரு பொதுவான எடுத்துக்காட்டு ஒரு லேபிள் ஆகும், இது அறிவுறுத்தல்களின் வரிசையில் முன்னோக்கி குதிப்பதை வழங்குகிறது.

மேக்ரோக்கள் மற்றும் மேக்ரோக்கள்

அசெம்பிளி மொழியில் நிரல்களை உருவாக்குவது என்பது உழைப்பு மிகுந்த செயலாகும், அடிக்கடி மீண்டும் மீண்டும் நிகழும் அதே செயல்பாடுகளை எளிமையாக மீண்டும் செய்ய வேண்டும். ஒரு செயல்முறை அல்லது செயல்பாட்டை உள்ளிடும்போது ஸ்டாக் மெமரி டிஸ்ப்ளேவை ஒழுங்கமைக்க ஒவ்வொரு முறையும் செயல்படுத்தப்படும் கட்டளைகளின் வரிசை ஒரு எடுத்துக்காட்டு.

டெவலப்பரின் வேலையை எளிதாக்க, மேக்ரோ கட்டளைகள் என்று அழைக்கப்படுபவை உருவாக்கப்பட்டன.

மேக்ரோ கட்டளைஒரு உரை மாற்றாகும், இதன் போது ஒரு குறிப்பிட்ட வகையின் ஒவ்வொரு அடையாளங்காட்டியும் சில தரவு சேமிப்பகத்திலிருந்து எழுத்துக்களின் சங்கிலியால் மாற்றப்படும். மேக்ரோ கட்டளையை இயக்கும் செயல்முறை மேக்ரோஜெனரேஷன் என்றும், மேக்ரோ கட்டளையை இயக்குவதன் விளைவாக வரும் எழுத்துக்களின் சங்கிலி மேக்ரோ விரிவாக்கம் என்றும் அழைக்கப்படுகிறது.

மேக்ரோக்களை இயக்கும் செயல்முறையானது, மூல நிரலின் உரையை தொடர்ச்சியாக ஸ்கேன் செய்து, அதில் உள்ள சில அடையாளங்காட்டிகளைக் கண்டறிந்து, அதற்குரிய எழுத்துச் சரங்களுடன் அவற்றை மாற்றுவதைக் கொண்டுள்ளது. மேலும், இது ஒரு எழுத்துச் சங்கிலியை (அடையாளங்காட்டி) மற்றொரு எழுத்துச் சங்கிலியுடன் (சரம்) மாற்றியமைக்கப்படுகிறது. அத்தகைய மாற்றீடு மேக்ரோ மாற்று என்று அழைக்கப்படுகிறது.

எந்த அடையாளங்காட்டிகளை எந்த சரங்களுடன் மாற்ற வேண்டும் என்பதைக் குறிப்பிட மேக்ரோ வரையறைகள் பயன்படுத்தப்படுகின்றன. மூல நிரலின் உரையில் மேக்ரோ வரையறைகள் நேரடியாக உள்ளன. நிரல் உரையில் வேறு எங்கும் தோன்றாத சிறப்பு முக்கிய வார்த்தைகள் அல்லது டிலிமிட்டர்கள் மூலம் அவை முன்னிலைப்படுத்தப்படுகின்றன. செயலாக்கத்தின் போது, ​​​​அனைத்து மேக்ரோ வரையறைகளும் உள்ளீட்டு நிரலின் உரையிலிருந்து முற்றிலும் விலக்கப்படுகின்றன, மேலும் மேக்ரோ கட்டளைகளை இயக்கும்போது அவை கொண்டிருக்கும் தகவல் செயலாக்கத்திற்காக சேமிக்கப்படும்.

ஒரு மேக்ரோ வரையறை அளவுருக்களைக் கொண்டிருக்கலாம். அதன் பிறகு ஒவ்வொரு மேக்ரோ கட்டளையும், அழைக்கப்படும் போது, ​​ஒவ்வொரு அளவுருவிற்குப் பதிலாக எழுத்துகளின் சரத்தைக் கொண்டிருக்க வேண்டும். மேக்ரோவை இயக்கும் போது, ​​மேக்ரோ வரையறையில் தொடர்புடைய அளவுரு தோன்றும் ஒவ்வொரு இடத்திலும் இந்த சரம் செருகப்படும். ஒரு மேக்ரோ கட்டளையின் அளவுரு மற்றொரு மேக்ரோ கட்டளையாக இருக்கலாம், பின்னர் ஒரு அளவுரு மாற்றீடு செய்ய வேண்டியிருக்கும் போது அது மீண்டும் மீண்டும் அழைக்கப்படுகிறது. கொள்கையளவில், மேக்ரோ அறிவுறுத்தல்கள் ஒரு வரிசையை உருவாக்கலாம்

சுழல்நிலை அழைப்புகள், செயல்முறைகள் மற்றும் செயல்பாடுகளுக்கான சுழல்நிலை அழைப்புகளின் வரிசையைப் போன்றது, ஆனால் கணக்கீடுகள் மற்றும் பாஸிங் அளவுருக்களுக்குப் பதிலாக, அவை உரை மாற்றீடுகளை மட்டுமே செய்கின்றன 1 .

மேக்ரோஸ் மற்றும் மேக்ரோ வரையறைகள் மேக்ரோப்ராசசர் அல்லது மேக்ரோஜெனரேட்டர் எனப்படும் சிறப்பு தொகுதி மூலம் செயலாக்கப்படுகின்றன. மேக்ரோஜெனரேட்டர் மூல நிரலின் உரையை உள்ளீடாகப் பெறுகிறது, அதில் மேக்ரோ வரையறைகள் மற்றும் மேக்ரோ கட்டளைகள் உள்ளன, மேலும் அதன் வெளியீடு மேக்ரோ வரையறைகள் மற்றும் மேக்ரோ கட்டளைகளைக் கொண்டிருக்காமல் மூல நிரலின் மேக்ரோ நீட்டிப்பின் உரையாகத் தோன்றும். இரண்டு உரைகளும் நிரல் உரைகள் மட்டுமே; வேறு எந்த செயலாக்கமும் செய்யப்படவில்லை. இது தொகுப்பியின் உள்ளீட்டிற்கு வரும் மூல உரையின் மேக்ரோ விரிவாக்கம் ஆகும்.

மேக்ரோ கட்டளைகள் மற்றும் மேக்ரோ வரையறைகளின் தொடரியல் கண்டிப்பாக வரையறுக்கப்படவில்லை. அசெம்பிளி மொழி தொகுப்பி செயலாக்கத்தைப் பொறுத்து இது மாறுபடலாம். ஆனால் நிரல் உரையில் மேக்ரோ மாற்றீடுகளைச் செய்வதற்கான கொள்கை மாறாமல் உள்ளது மற்றும் அவற்றின் தொடரியல் சார்ந்து இல்லை.

ஒரு மேக்ரோஜெனரேட்டர் பெரும்பாலும் ஒரு தனி மென்பொருள் தொகுதியாக இல்லை, ஆனால் சட்டசபை மொழி தொகுப்பியில் சேர்க்கப்பட்டுள்ளது. அசல் நிரலின் மேக்ரோ நீட்டிப்பு பொதுவாக அதன் டெவலப்பருக்குக் கிடைக்காது. மேலும், முழு நிரல் உரையையும் பாகுபடுத்துவதுடன், கம்பைலரின் முதல் பாஸில் மூல உரையை பாகுபடுத்தும் போது மேக்ரோ மாற்றீடுகள் வரிசையாகச் செய்யப்படலாம், பின்னர் ஒட்டுமொத்த மூல நிரலின் மேக்ரோ விரிவாக்கம் அவ்வாறு இருக்காது.

எடுத்துக்காட்டாக, பின்வரும் உரை புஷ்_0 மேக்ரோவை இன்டெல் 8086 செயலியின் சட்டசபை மொழியில் வரையறுக்கிறது:

Hog ah, ah ■ push ax endm

இந்த மேக்ரோவின் சொற்பொருள், செயலி பதிவு ஆ மூலம் அடுக்கில் "0" எண்ணை எழுதுவதாகும். மேக்ரோ அறிவுறுத்தல் தோன்றும் நிரல் உரையில் எல்லா இடங்களிலும்

கட்டளைகளின் வரிசையுடன் மேக்ரோ மாற்றீட்டின் விளைவாக இது மாற்றப்படும்:

ஹாக் ஆ, ஆ ■ புஷ் கோடாரி

இது மேக்ரோ வரையறையின் எளிமையான பதிப்பாகும். அளவுருக்கள் மூலம் மிகவும் சிக்கலான மேக்ரோ வரையறைகளை உருவாக்க முடியும். அத்தகைய ஒரு மேக்ரோ வரையறை கீழே விவரிக்கப்பட்டுள்ளது:

இத்தகைய மறுநிகழ்வின் ஆழம் பொதுவாக மிகவும் குறைவாகவே இருக்கும். மேக்ரோ கட்டளைகளின் சுழல்நிலை அழைப்புகளின் வரிசை வழக்கமாக நடைமுறைகள் மற்றும் செயல்பாடுகளின் சுழல்நிலை அழைப்புகளின் வரிசையை விட கணிசமாக அதிக கடுமையான கட்டுப்பாடுகளுக்கு உட்பட்டது, இது நினைவக காட்சியின் ஸ்டாக் அமைப்புடன், அளவுரு கடந்து செல்லும் அடுக்கின் அளவால் மட்டுமே வரையறுக்கப்படுகிறது. add_abx மேக்ரோ xl,x2

தள்ளு கோடாரி
முடிவு

மேக்ரோ கட்டளை நிரல் உரையில் பொருத்தமான அளவுருக்களுடன் குறிக்கப்பட வேண்டும். இந்த எடுத்துக்காட்டில், மேக்ரோ

மேக்ரோ மாற்றீட்டின் விளைவாக Add_abx4,8 கட்டளைகளின் வரிசையால் மாற்றப்படும்:

ஆ,4 சேர் bx.4 சேர் எக்ஸ்,8 புஷ் கோடாரி

பல அசெம்பிளி மொழி கம்பைலர்கள் உள்ளூர் மாறிகள் மற்றும் லேபிள்களைக் கொண்டிருக்கும் இன்னும் சிக்கலான கட்டுமானங்களை அனுமதிக்கின்றன. அத்தகைய கட்டுமானத்தின் ஒரு எடுத்துக்காட்டு மேக்ரோ வரையறை:

Loop_ax மேக்ரோ xl,x2,yl

Hog bx.bx loopax: bx.yl ஐச் சேர்க்கவும்

இங்கே 1 oopax லேபிள் உள்ளூர், இந்த மேக்ரோ வரையறைக்குள் மட்டுமே வரையறுக்கப்படுகிறது. இந்த வழக்கில், நிரல் உரையில் மேக்ரோ கட்டளையின் எளிய உரை மாற்றீட்டை இனி செய்ய முடியாது, ஏனெனில் இந்த மேக்ரோ கட்டளை இரண்டு முறை செயல்படுத்தப்பட்டால், இது நிரல் உரையில் இரண்டு ஒத்த லேபிள்கள் 1 ஓராக்ஸ் தோற்றத்திற்கு வழிவகுக்கும். இந்த உருவகத்தில், மேக்ரோ ஜெனரேட்டர் மிகவும் சிக்கலான உரை மாற்று நுட்பங்களைப் பயன்படுத்த வேண்டும், இது உள்ளீட்டு நிரலின் லெக்சிக்கல் கூறுகளை அடையாளம் காண கம்பைலர்கள் பயன்படுத்துவதைப் போலவே, சாத்தியமான அனைத்து உள்ளூர் மாறிகள் மற்றும் மேக்ரோ லேபிள்களுக்கு முழு நிரலிலும் தனிப்பட்ட பெயர்களைக் கொடுக்க வேண்டும். மேக்ரோக்கள் மற்றும் மேக்ரோ இன்ஸ்ட்ரக்ஷன்கள் அசெம்பிளி மொழிகளில் மட்டுமல்ல, பல உயர்நிலை மொழிகளிலும் பயன்படுத்தப்பட்டுள்ளன. அங்கு அவை மொழி முன்செயலி எனப்படும் சிறப்பு தொகுதி மூலம் செயலாக்கப்படுகின்றன (உதாரணமாக, C மொழி முன்செயலி பரவலாக அறியப்படுகிறது). செயலாக்கக் கொள்கையானது சட்டசபை மொழி நிரல்களைப் போலவே உள்ளது - முன்செயலியானது மூல நிரலின் வரிகளில் நேரடியாக உரை மாற்றீடுகளை செய்கிறது. உயர்-நிலை மொழிகளில், மேக்ரோ வரையறைகள் மூல நிரலின் உரையிலிருந்து பிரிக்கப்பட வேண்டும், இதனால் முன்செயலி அவற்றை உள்ளீட்டு மொழியின் தொடரியல் கட்டமைப்புகளுடன் குழப்ப முடியாது. இதைச் செய்ய, சிறப்பு குறியீடுகள் மற்றும் கட்டளைகள் (முன்செயலி கட்டளைகள்) பயன்படுத்தப்படுகின்றன, அவை ஒருபோதும் மூல நிரலின் உரையில் தோன்றாது அல்லது மேக்ரோ வரையறைகள் ஏற்படுகின்றன.

மூல நிரலின் ஒரு சிறிய பகுதியின் உள்ளே - அவை கருத்துகளில் சேர்க்கப்பட்டுள்ளன (அத்தகைய செயலாக்கம் உள்ளது, எடுத்துக்காட்டாக, போர்லாண்ட் உருவாக்கிய பாஸ்கல் தொகுப்பியில்). மேக்ரோ கட்டளைகள், மாறாக, நிரலின் மூல உரையில் எந்த இடத்திலும் தோன்றும், மேலும் அவற்றின் தொடரியல் அழைப்பு உள்ளீட்டு மொழியில் அழைப்பு செயல்பாடுகளிலிருந்து வேறுபடாது.

அழைப்பு தொடரியல் ஒற்றுமை இருந்தபோதிலும், மேக்ரோ கட்டளைகள் நடைமுறைகள் மற்றும் செயல்பாடுகளிலிருந்து அடிப்படையில் வேறுபட்டவை என்பதை நினைவில் கொள்ள வேண்டும், ஏனெனில் அவை விளைவாக குறியீட்டை உருவாக்கவில்லை, ஆனால் மூல நிரலின் உரையில் நேரடியாக உரை மாற்றீடுகள் செய்யப்படுகின்றன. ஒரு செயல்பாடு மற்றும் மேக்ரோவை அழைப்பதன் முடிவு இதன் காரணமாக கணிசமாக வேறுபடலாம்.

C இல் ஒரு உதாரணத்தைப் பார்ப்போம். ஒரு செயல்பாடு விவரிக்கப்பட்டால்

Int fKint a) ( திரும்ப a + a: ) மற்றும் இதே போன்ற மேக்ரோ கட்டளை

#define f2(a) ((a) + (a)) பிறகு அவர்களை அழைப்பதன் விளைவு எப்போதும் ஒரே மாதிரியாக இருக்காது.

உண்மையில், அழைப்புகள் j=fl(i) மற்றும் j=f2(i) (இங்கு i மற்றும் j ஆகியவை சில முழு எண் மாறிகள்) ஒரே முடிவுக்கு வழிவகுக்கும். ஆனால் j=fl(++i) மற்றும் j=f2(++i) ஆகிய அழைப்புகள் கொடுக்கும் வெவ்வேறு அர்த்தங்கள்மாறி j. உண்மை என்னவென்றால், f2 என்பது ஒரு மேக்ரோ வரையறை என்பதால், இரண்டாவது வழக்கில் ஒரு உரை மாற்றீடு செய்யப்படும், இது ஆபரேட்டர்களின் வரிசைக்கு வழிவகுக்கும் j=((++i) + (++i)). இந்த வரிசையில் ++i செயல்பாடு fl(++i) சார்பு அழைப்பைப் போலல்லாமல் இரண்டு முறை செய்யப்படுவதை நீங்கள் காணலாம், இது ஒரு முறை மட்டுமே செய்யப்படுகிறது.

நிரலாக்க மொழியில் எழுதப்பட்ட நிரலின் உரை கணினிக்கு புரியாததால், அதை இயந்திர மொழியில் மொழிபெயர்க்க வேண்டும். நிரலாக்க மொழியிலிருந்து ஒரு நிரலை இயந்திர குறியீட்டு மொழிக்கு மொழிபெயர்ப்பது என்று அழைக்கப்படுகிறது ஒளிபரப்பு(மொழிபெயர்ப்பு - மொழிபெயர்ப்பு), மற்றும் இது சிறப்பு நிரல்களால் செய்யப்படுகிறது - ஒளிபரப்பாளர்கள்.

இரண்டு வகையான மொழிபெயர்ப்பாளர்கள் உள்ளனர்: மொழிபெயர்ப்பாளர்கள் மற்றும் தொகுப்பாளர்கள்.

மொழிபெயர்ப்பாளர்ஒரு மொழிபெயர்ப்பாளர் என்று அழைக்கப்படுகிறார், அவர் அறிக்கை மூலம் அறிக்கை (அறிவுறுத்தல்-கட்டளை) மொழிபெயர்ப்பையும், மூல நிரலின் மொழிபெயர்க்கப்பட்ட அறிக்கையை செயல்படுத்துவதையும் செய்கிறார். விளக்க முறையின் இரண்டு குறைபாடுகள்:

1. அசல் நிரலை இயக்கும் முழு செயல்முறையின் போது, ​​விளக்கமளிக்கும் நிரல் கணினி நினைவகத்தில் இருக்க வேண்டும், அதாவது, ஒரு குறிப்பிட்ட அளவு நினைவகத்தை ஆக்கிரமித்துள்ளது;

2. ஒரே ஆபரேட்டரை மொழிபெயர்ப்பதற்கான செயல்முறை, நிரலில் இந்த கட்டளை செயல்படுத்தப்பட வேண்டிய பல முறை மீண்டும் மீண்டும் செய்யப்படுகிறது.

தொகுப்பாளர்இயந்திர மொழியில் ஒரு மூல நிரலை நிரலாக (மாட்யூல்) மாற்றும் (மொழிபெயர்க்கும்) நிரலாகும். இதற்குப் பிறகு, நிரல் கணினியின் நினைவகத்தில் எழுதப்பட்டு பின்னர் மட்டுமே செயல்படுத்தப்படும்.

தொகுப்பின் போது, ​​மொழிபெயர்ப்பு மற்றும் செயல்படுத்தல் செயல்முறைகள் சரியான நேரத்தில் பிரிக்கப்படுகின்றன: முதலில், மூல நிரல் முழுவதுமாக இயந்திர மொழியில் மொழிபெயர்க்கப்படுகிறது (அதன் பிறகு RAM இல் மொழிபெயர்ப்பாளரின் இருப்பு தேவையில்லை), பின்னர் மொழிபெயர்க்கப்பட்ட நிரலை பல முறை செயல்படுத்தலாம். .

எந்த மொழிபெயர்ப்பாளரும் பின்வரும் முக்கிய பணிகளை தீர்க்கிறார்:

1. மொழிபெயர்க்கப்பட்ட நிரலை பகுப்பாய்வு செய்து அதில் தொடரியல் பிழைகள் உள்ளதா என்பதை தீர்மானிக்கிறது;

2. கணினி கட்டளை மொழியில் வெளியீட்டு நிரலை உருவாக்குகிறது;

3. வெளியீட்டு நிரலுக்கான நினைவகத்தை ஒதுக்குகிறது, அதாவது. ஒவ்வொரு மாறி, மாறிலி, அணிவரிசைகள் மற்றும் பிற பொருள்களுக்கு அவற்றின் சொந்த நினைவகப் பகுதி ஒதுக்கப்படுகிறது.

இதனால், தொகுப்பாளர்(ஆங்கிலம்) தொகுப்பி- கம்பைலர், சேகரிப்பான்) முழு நிரலையும் படிக்கிறது முற்றிலும், அதை மொழிபெயர்த்து, நிரலின் முழுமையான பதிப்பை இயந்திர மொழியில் உருவாக்குகிறது, பின்னர் அது செயல்படுத்தப்படுகிறது.

மொழிபெயர்ப்பாளர்(ஆங்கிலம்) மொழிபெயர்ப்பாளர்- மொழிபெயர்ப்பாளர், மொழிபெயர்ப்பாளர்) நிரலை மொழிபெயர்த்து செயல்படுத்துகிறது வரி வரி.

ஒரு நிரல் தொகுக்கப்பட்டவுடன், மூல நிரலோ அல்லது தொகுப்பியோ இனி தேவைப்படாது. அதே நேரத்தில், மொழிபெயர்ப்பாளரால் செயலாக்கப்பட்ட நிரல் மீண்டும் செய்யப்பட வேண்டும் பரிமாற்றம்நிரல் தொடங்கப்படும் ஒவ்வொரு முறையும் இயந்திர மொழியில்.

ஒவ்வொரு குறிப்பிட்ட மொழியும் தொகுத்தல் அல்லது விளக்கத்தை நோக்கியதாக உள்ளது - அது உருவாக்கப்பட்ட நோக்கத்தைப் பொறுத்து. உதாரணத்திற்கு, பாஸ்கல்நிரல் வேகம் முக்கியமான சிக்கலான சிக்கல்களைத் தீர்க்க பொதுவாகப் பயன்படுத்தப்படுகிறது. எனவே, இந்த மொழி பொதுவாக பயன்படுத்தி செயல்படுத்தப்படுகிறது தொகுப்பி. மறுபுறம், அடிப்படைபுதிய புரோகிராமர்களுக்கான மொழியாக உருவாக்கப்பட்டது, ஒரு நிரலை வரிக்கு வரி செயல்படுத்துவது மறுக்க முடியாத நன்மைகளைக் கொண்டுள்ளது. சில நேரங்களில் ஒரு மொழிக்கு உள்ளது மற்றும் தொகுப்பி, மற்றும் மொழிபெயர்ப்பாளர். இந்த வழக்கில், நிரலை உருவாக்க மற்றும் சோதிக்க, நீங்கள் ஒரு மொழிபெயர்ப்பாளரைப் பயன்படுத்தலாம், பின்னர் அதன் செயல்பாட்டின் வேகத்தை மேம்படுத்த பிழைத்திருத்த நிரலை தொகுக்கலாம்.

நிரலாக்க மொழியில் எழுதப்பட்ட உரை கணினிக்கு புரியாது என்பதால், அதை இயந்திரக் குறியீடாக மொழிபெயர்க்க வேண்டும். நிரலாக்க மொழியிலிருந்து இயந்திர குறியீட்டு மொழிக்கு ஒரு நிரலின் இந்த மொழிபெயர்ப்பு மொழிபெயர்ப்பு என்று அழைக்கப்படுகிறது, மேலும் இது சிறப்பு நிரல்களால் - மொழிபெயர்ப்பாளர்களால் செய்யப்படுகிறது.

மொழிபெயர்ப்பாளர் என்பது ஒரு சேவை நிரலாகும், இது உள்ளீட்டு நிரலாக்க மொழியில் வழங்கப்பட்ட ஒரு மூல நிரலை ஒரு பொருள் மொழியில் வழங்கப்படும் வேலை நிரலாக மாற்றுகிறது.

தற்போது, ​​மொழிபெயர்ப்பாளர்கள் மூன்று முக்கிய குழுக்களாக பிரிக்கப்பட்டுள்ளனர்: அசெம்பிளர்கள், கம்பைலர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள்.

ஒரு அசெம்பிளர் என்பது ஒரு கணினி பயன்பாட்டு நிரலாகும், இது குறியீட்டு கட்டமைப்புகளை இயந்திர மொழி கட்டளைகளாக மாற்றுகிறது. அசெம்ப்லர்களின் ஒரு குறிப்பிட்ட அம்சம் என்னவென்றால், அவர்கள் ஒரு குறியீட்டு அறிவுறுத்தலை ஒரு இயந்திர அறிவுறுத்தலாக வினைச்சொல்லாக மொழிபெயர்க்கிறார்கள். இவ்வாறு, அசெம்பிளி மொழி (ஆட்டோகோட் என்றும் அழைக்கப்படுகிறது) கணினி கட்டளை அமைப்பின் உணர்வை எளிதாக்குவதற்கும் இந்த கட்டளை அமைப்பில் நிரலாக்கத்தை விரைவுபடுத்துவதற்கும் வடிவமைக்கப்பட்டுள்ளது. ஒரு புரோகிராமர் அவர்களின் பைனரி குறியீட்டை விட இயந்திர வழிமுறைகளின் நினைவூட்டல் பதவியை நினைவில் கொள்வது மிகவும் எளிதானது.

அதே நேரத்தில், அசெம்பிளி மொழி, இயந்திர கட்டளைகளின் ஒப்புமைகளுக்கு கூடுதலாக, பல கூடுதல் வழிமுறைகளைக் கொண்டுள்ளது, அவை குறிப்பாக, கணினி வளங்களை நிர்வகித்தல், மீண்டும் மீண்டும் துண்டுகளை எழுதுதல் மற்றும் பல தொகுதி நிரல்களை உருவாக்குதல். எனவே, மொழியின் வெளிப்பாடு ஒரு குறியீட்டு குறியீட்டு மொழியை விட மிகவும் பணக்காரமானது, இது நிரலாக்க செயல்திறனை பெரிதும் மேம்படுத்துகிறது.

கம்பைலர் என்பது மூல நிரலாக்க மொழியில் எழுதப்பட்ட நிரலை இயந்திர மொழியில் மொழிபெயர்க்கும் ஒரு சேவை நிரலாகும். ஒரு அசெம்பிளரைப் போலவே, கம்பைலர் ஒரு நிரலை ஒரு மொழியிலிருந்து மற்றொரு மொழிக்கு மாற்றுகிறது (பெரும்பாலும், ஒரு குறிப்பிட்ட கணினியின் மொழியாக). அதே நேரத்தில், மூல மொழி கட்டளைகள் அமைப்பு மற்றும் இயந்திர மொழி கட்டளைகளிலிருந்து சக்தி ஆகியவற்றில் கணிசமாக வேறுபடுகின்றன. மூல மொழியின் ஒரு கட்டளை 7-10 இயந்திர கட்டளைகளாக மொழிபெயர்க்கப்படும் மொழிகள் உள்ளன. இருப்பினும், ஒவ்வொரு கட்டளையிலும் 100 அல்லது அதற்கு மேற்பட்ட இயந்திரக் கட்டளைகள் இருக்கக்கூடிய மொழிகளும் உள்ளன (எடுத்துக்காட்டாக, ப்ரோலாக்). கூடுதலாக, மூல மொழிகள் பெரும்பாலும் கடுமையான தரவு தட்டச்சுகளைப் பயன்படுத்துகின்றன, அவை அவற்றின் ஆரம்ப விளக்கத்தின் மூலம் மேற்கொள்ளப்படுகின்றன. நிரலாக்கமானது ஒரு அல்காரிதத்தை குறியிடுவதை நம்பாமல், தரவு கட்டமைப்புகள் அல்லது வகுப்புகள் பற்றி கவனமாக சிந்திக்க வேண்டும். அத்தகைய மொழிகளிலிருந்து மொழிபெயர்க்கும் செயல்முறை பொதுவாக தொகுத்தல் என்று அழைக்கப்படுகிறது, மேலும் மூல மொழிகள் பொதுவாக உயர்நிலை நிரலாக்க மொழிகள் (அல்லது உயர் நிலை மொழிகள்) என வகைப்படுத்தப்படுகின்றன. கணினி கட்டளை அமைப்பிலிருந்து ஒரு நிரலாக்க மொழியின் சுருக்கம் குறிப்பிட்ட சிக்கல்களைத் தீர்ப்பதில் கவனம் செலுத்தும் பல்வேறு வகையான மொழிகளை சுயாதீனமாக உருவாக்க வழிவகுத்தது. அறிவியல் கணக்கீடுகள், பொருளாதாரக் கணக்கீடுகள், தரவுத்தளங்களுக்கான அணுகல் மற்றும் பிறவற்றிற்காக மொழிகள் தோன்றியுள்ளன.

மொழிபெயர்ப்பாளர் - ஒரு நிரல் அல்லது சாதனம், இது ஆபரேட்டர் மூலம் ஆபரேட்டர் மொழிபெயர்ப்பு மற்றும் மூல நிரலை செயல்படுத்துகிறது. ஒரு கம்பைலர் போலல்லாமல், ஒரு மொழிபெயர்ப்பாளர் இயந்திர மொழி நிரலை வெளியீட்டாக உருவாக்கவில்லை. மூல மொழியில் ஒரு கட்டளையை அங்கீகரித்தவுடன், அது உடனடியாக அதை செயல்படுத்துகிறது. தொகுப்பாளர்கள் மற்றும் மொழிபெயர்ப்பாளர்கள் இருவரும் நிரலின் மூலக் குறியீட்டை பகுப்பாய்வு செய்வதற்கு ஒரே முறைகளைப் பயன்படுத்துகின்றனர். ஆனால் மொழிபெயர்ப்பாளர் ஒரு கட்டளையை எழுதிய பிறகு தரவை செயலாக்கத் தொடங்க உங்களை அனுமதிக்கிறது. இது நிரல்களை உருவாக்குதல் மற்றும் பிழைத்திருத்தம் செய்யும் செயல்முறையை மிகவும் நெகிழ்வானதாக்குகிறது. கூடுதலாக, வெளியீட்டு இயந்திரக் குறியீடு இல்லாததால், கூடுதல் கோப்புகளுடன் வெளிப்புற சாதனங்களை "குழப்பம்" செய்யாமல் இருப்பதை சாத்தியமாக்குகிறது, மேலும் பரவலாகப் பயன்படுத்தப்படும் நிரலாக்க மொழியில் ஒரு முறை மட்டுமே அதை உருவாக்கியதன் மூலம், மொழிபெயர்ப்பாளரை எந்த இயந்திர கட்டமைப்பிற்கும் எளிதாக மாற்றியமைக்க முடியும். எனவே, ஜாவா ஸ்கிரிப்ட் மற்றும் விபி ஸ்கிரிப்ட் போன்ற விளக்க மொழிகள் பரவலாகிவிட்டன. மொழிபெயர்ப்பாளர்களின் குறைபாடு நிரல் செயல்படுத்தலின் குறைந்த வேகம். பொதுவாக, விளக்கப்பட்ட நிரல்கள் நேட்டிவ் புரோகிராம்களை விட 50 முதல் 100 மடங்கு மெதுவாக இயங்கும்.

எமுலேட்டர் என்பது ஒரு நிரல் அல்லது மென்பொருள் மற்றும் வன்பொருள் கருவியாகும், இது கொடுக்கப்பட்ட கணினியில் இருந்து வேறுபட்ட குறியீடுகள் அல்லது செயல்பாடுகளைச் செய்யும் முறைகளைப் பயன்படுத்தும் நிரலை மறுநிரலாக்கம் இல்லாமல் செயல்படுத்தும் திறனை வழங்குகிறது. ஒரு எமுலேட்டர் ஒரு மொழிபெயர்ப்பாளரைப் போன்றது, அது ஒரு குறிப்பிட்ட மொழியில் எழுதப்பட்ட நிரலை நேரடியாக இயக்குகிறது. இருப்பினும், பெரும்பாலும் இது இயந்திர மொழி அல்லது இடைநிலை குறியீடு. இரண்டும் பைனரி குறியீட்டில் உள்ள வழிமுறைகளைக் குறிக்கின்றன, அவை செயல்பாட்டுக் குறியீடு அங்கீகரிக்கப்பட்ட உடனேயே செயல்படுத்தப்படும். உரை நிரல்களைப் போலன்றி, நிரல் கட்டமைப்பை அங்கீகரிக்க வேண்டிய அவசியமில்லை அல்லது இயக்கங்களைத் தேர்ந்தெடுக்க வேண்டிய அவசியமில்லை.

எமுலேட்டர்கள் பல்வேறு நோக்கங்களுக்காக அடிக்கடி பயன்படுத்தப்படுகின்றன. எடுத்துக்காட்டாக, புதிய கணினி அமைப்புகளை உருவாக்கும்போது, ​​இதுவரை இல்லாத கணினிகளுக்காக உருவாக்கப்பட்ட நிரல்களை இயக்கும் முன்மாதிரி முதலில் உருவாக்கப்படுகிறது. இது கட்டளை அமைப்பை மதிப்பிடவும், தொடர்புடைய வன்பொருள் உருவாக்கப்படுவதற்கு முன்பே அடிப்படை மென்பொருளை உருவாக்கவும் உங்களை அனுமதிக்கிறது.

பெரும்பாலும், புதிய கணினிகளில் பழைய நிரல்களை இயக்க முன்மாதிரி பயன்படுத்தப்படுகிறது. பொதுவாக, புதிய கணினிகள் வேகமானவை மற்றும் சிறந்த சாதனங்களைக் கொண்டுள்ளன. இது பழைய கணினிகளில் இயங்குவதை விட பழைய நிரல்களை மிகவும் திறமையாக பின்பற்ற உங்களை அனுமதிக்கிறது.

டிரான்ஸ்கோடர் என்பது ஒரு கணினியின் இயந்திர மொழியில் எழுதப்பட்ட நிரல்களை மற்றொரு கணினியின் இயந்திர மொழியில் நிரல்களாக மொழிபெயர்க்கும் ஒரு நிரல் அல்லது மென்பொருள் சாதனமாகும். எமுலேட்டர் என்பது மொழிபெயர்ப்பாளரின் குறைவான அறிவாற்றல் அனலாக் என்றால், டிரான்ஸ்கோடர் கம்பைலருடன் தொடர்புடைய அதே திறனில் செயல்படுகிறது. இதேபோல், மூல (மற்றும் பொதுவாக பைனரி) இயந்திரக் குறியீடு அல்லது ஒரு இடைநிலை பிரதிநிதித்துவம் ஒரு ஒற்றை அறிவுறுத்தலுடன் மற்றும் மூல நிரலின் கட்டமைப்பின் பொதுவான பகுப்பாய்வு இல்லாமல் பிற ஒத்த குறியீட்டாக மாற்றப்படுகிறது. ஒரு கணினி கட்டமைப்பிலிருந்து மற்றொன்றுக்கு நிரல்களை மாற்றும் போது டிரான்ஸ்கோடர்கள் பயனுள்ளதாக இருக்கும். தற்போதுள்ள பைனரி குறியீட்டிலிருந்து உயர்நிலை மொழி நிரல் உரையை மறுகட்டமைக்கவும் அவை பயன்படுத்தப்படலாம்.

மேக்ரோப்ராசசர் என்பது ஒரு வரிசை எழுத்துக்களை மற்றொரு வரிசையுடன் மாற்றும் நிரலாகும். இது ஒரு வகை கம்பைலர். மூல உரையில் அமைந்துள்ள சிறப்பு செருகல்களை செயலாக்குவதன் மூலம் இது வெளியீட்டு உரையை உருவாக்குகிறது. இந்த செருகல்கள் ஒரு சிறப்பு வழியில் வடிவமைக்கப்பட்டுள்ளன மற்றும் மேக்ரோலாங்குவேஜ் எனப்படும் மொழியின் கட்டமைப்பைச் சேர்ந்தவை. மேக்ரோப்ராசசர்கள் பெரும்பாலும் நிரலாக்க மொழிகளுக்கான துணை நிரல்களாகப் பயன்படுத்தப்படுகின்றன, இது நிரலாக்க அமைப்புகளின் செயல்பாட்டை அதிகரிக்கிறது. ஏறக்குறைய எந்த அசெம்பிளரும் ஒரு மேக்ரோப்ராசஸரைக் கொண்டுள்ளது, இது இயந்திர நிரல்களை உருவாக்கும் திறனை அதிகரிக்கிறது. இத்தகைய நிரலாக்க அமைப்புகள் பொதுவாக மேக்ரோஅசெம்பிலர்கள் என்று அழைக்கப்படுகின்றன.

மேக்ரோப்ராசசர்கள் உயர்நிலை மொழிகளிலும் பயன்படுத்தப்படுகின்றன. அவை PL/1, C, C++ போன்ற மொழிகளின் செயல்பாட்டை அதிகரிக்கின்றன. மேக்ரோ செயலிகள் குறிப்பாக C மற்றும் C++ இல் பரவலாகப் பயன்படுத்தப்படுகின்றன, இது நிரல்களை எழுதுவதை எளிதாக்குகிறது. மேக்ரோப்ராசசர்கள் மொழியின் தொடரியல் அல்லது சொற்பொருளை மாற்றாமல் நிரலாக்க செயல்திறனை மேம்படுத்துகின்றன.

தொடரியல் என்பது ஒரு மொழியின் கூறுகளின் உருவாக்கத்தை தீர்மானிக்கும் விதிகளின் தொகுப்பாகும். வேறு வார்த்தைகளில் கூறுவதானால், இது கொடுக்கப்பட்ட மொழியில் குறியீடுகளின் சொற்பொருள் முக்கியத்துவம் வாய்ந்த வரிசைகளை உருவாக்குவதற்கான விதிகளின் தொகுப்பாகும். ஒரு மொழியின் கருத்துக்களை விவரிக்கும் விதிகளைப் பயன்படுத்தி தொடரியல் குறிப்பிடப்படுகிறது. கருத்துகளின் எடுத்துக்காட்டுகள்: மாறி, வெளிப்பாடு, ஆபரேட்டர், செயல்முறை. கருத்துகளின் வரிசை மற்றும் விதிகளில் அவற்றின் ஏற்றுக்கொள்ளக்கூடிய பயன்பாடு நிரல்களை உருவாக்கும் தொடரியல் சரியான கட்டமைப்புகளை தீர்மானிக்கிறது. இது பொருள்களின் படிநிலையாகும், மேலும் அவை எவ்வாறு ஒன்றோடொன்று தொடர்பு கொள்கின்றன என்பது அல்ல, இது தொடரியல் மூலம் வரையறுக்கப்படுகிறது. எடுத்துக்காட்டாக, ஒரு அறிக்கை ஒரு செயல்முறையில் மட்டுமே நிகழும், ஒரு அறிக்கையில் ஒரு வெளிப்பாடு, ஒரு மாறி ஒரு பெயர் மற்றும் விருப்ப குறியீடுகள் போன்றவற்றைக் கொண்டிருக்கும். "இல்லாத லேபிளுக்கு குதித்தல்" அல்லது "கொடுக்கப்பட்ட பெயருடன் ஒரு மாறி வரையறுக்கப்படவில்லை" போன்ற நிரலில் உள்ள நிகழ்வுகளுடன் தொடரியல் தொடர்புபடுத்தப்படவில்லை. இதைத்தான் பொருளியல் செய்கிறது.

சொற்பொருள் - மொழி கூறுகள் மற்றும் அவற்றின் சொற்பொருள் அர்த்தங்களுக்கு இடையிலான உறவுகளை நிர்ணயிக்கும் விதிகள் மற்றும் நிபந்தனைகள், அத்துடன் மொழியின் தொடரியல் கட்டுமானங்களின் அர்த்தமுள்ள அர்த்தத்தின் விளக்கம். ஒரு நிரலாக்க மொழியின் பொருள்கள் ஒரு குறிப்பிட்ட படிநிலைக்கு ஏற்ப உரையில் வைக்கப்படுவது மட்டுமல்லாமல், பல்வேறு சங்கங்களை உருவாக்கும் பிற கருத்துக்கள் மூலமாகவும் ஒன்றோடொன்று இணைக்கப்பட்டுள்ளன. எடுத்துக்காட்டாக, ஒரு மாறி, அதற்கான தொடரியல் அறிவிப்புகள் மற்றும் சில அறிக்கைகளில் மட்டுமே செல்லுபடியாகும் இருப்பிடத்தை வரையறுக்கிறது, ஒரு குறிப்பிட்ட வகை உள்ளது, குறிப்பிட்ட எண்ணிக்கையிலான செயல்பாடுகளுடன் பயன்படுத்தப்படலாம், முகவரி, அளவு மற்றும் அதற்கு முன் அறிவிக்கப்பட வேண்டும். திட்டத்தில் பயன்படுத்தப்படும்.

ஒரு பாகுபடுத்தி என்பது ஒரு கம்பைலர் கூறு ஆகும், இது கொடுக்கப்பட்ட நிரலாக்க மொழியின் தொடரியல் விதிகள் மற்றும் சொற்பொருள்களுடன் இணங்குவதற்கான மூல அறிக்கைகளை சரிபார்க்கிறது. அதன் பெயர் இருந்தபோதிலும், பகுப்பாய்வி தொடரியல் மற்றும் சொற்பொருள் இரண்டையும் சரிபார்க்கிறது. இது பல தொகுதிகளைக் கொண்டுள்ளது, ஒவ்வொன்றும் அதன் சொந்த பிரச்சினைகளை தீர்க்கிறது. மொழிபெயர்ப்பாளரின் கட்டமைப்பை விவரிக்கும் போது இது இன்னும் விரிவாக விவாதிக்கப்படும்.

எந்த மொழிபெயர்ப்பாளரும் பின்வரும் முக்கிய பணிகளைச் செய்கிறார்:

மொழிபெயர்க்கப்பட்ட நிரலை பகுப்பாய்வு செய்கிறது, குறிப்பாக அதில் தொடரியல் பிழைகள் உள்ளதா என்பதை தீர்மானிக்கிறது;

இயந்திர அறிவுறுத்தல் மொழியில் ஒரு வெளியீட்டு நிரலை (பெரும்பாலும் பொருள் நிரல் என்று அழைக்கப்படுகிறது) உருவாக்குகிறது;

ஒரு பொருள் நிரலுக்கு நினைவகத்தை ஒதுக்குகிறது.