கணினிகள்நிரலாக்க

வலைப்பரப்பி - உள்ளது ... தொகுப்பிகளின் வகைகள். மாற்று மற்றும் ஒளிபரப்பு திட்டங்கள்

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

அடிப்படை கருத்துக்கள்

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

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

மொழிபெயர்ப்பாளர்களின் சில வகைகளில் மிகவும் விசித்திரமான பெயர்கள்:

  • அசெம்ப்ளர் இயந்திர மொழிக்கு அசெம்ப்ளி மொழியில் திட்டங்கள் மொழிபெயர்க்கலாம்.
  • தொகுப்பி குறைந்த மொழிக்கு ஒரு உயர் மட்ட மொழி மொழிபெயர்க்கலாம்.

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

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

மூல குறியீடு தொகுப்பி → (மொழிபெயர்ப்பாளர்) → → சட்டசபை குறியீடு அசெம்ப்ளர் (தொகுப்பி ஆகும்) → → சிபியு இயந்திரம் குறியீடு (மொழிப்பெயர்ப்பாளர்).

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

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

மொழிபெயர்ப்பு மேடை

பிராட்காஸ்ட் பகுப்பாய்வு மற்றும் செயற்கை உருவாக்கம் வழிமுறைகளை உள்ளடக்கியுள்ளது:

மூல குறியீடு பகுப்பாய்வி → → → கருத்துரு பிரதிநிதித்துவம் ஜெனரேட்டர் (தொகுப்பு) → இலக்கு குறியீடு.

இந்த காரணங்களுக்காக காரணமாக இருக்கிறது:

  • மற்ற எந்த முறையும் பொருத்தமானது அல்ல. வார்த்தை மொழிபெயர்ப்பு பயன் தராது என.
  • நல்ல பொறியியல் தீர்வு: நீங்கள் மாறாக எம் × N சிக்கலான விட இலக்கு வேண்டியதில்லை மட்டுமே எம் + அன் எளிதான நிரல்களையும் (polukompilyatorov) எழுத M மற்றும் N ஆதார மொழிகள் மொழிபெயர்ப்பாளர் (மொழிபெயர்ப்பாளர்களின் மொத்தம்) எழுத விரும்பினால்.

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

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

சாதனை மொழிபெயர்ப்பாளர்

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

தொகுப்பிகளின் மூன்று வகைகள் உள்ளன:

  • வலைப்பரப்பி - அது அடிப்படை மூலமொழியைக் ஒத்துள்ளது என்றால் samokompilyator உள்ளது.
  • மொழி இலக்காகக் கொண்டுள்ளன கம்பைலர் அடிப்படை, samorezidentnym எனவும் அழைப்பர்.
  • வலைப்பரப்பி - ஒரு குறுக்குத்-தொகுப்பி அவர் இலக்கு என்றால் மற்றும் அடிப்படை பல்வேறு மொழிகளில்.

ஏன் இந்த முக்கியமானது?

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

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

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

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

விரிவான தொழில்நுட்பம்

தொகுப்பி தொழில்நுட்பம் கணினி அறிவியல் பல்வேறு பகுதிகளை:

  • மொழி முறையான கோட்பாடு: இலக்கணம் பார்ஸிங், கணிக்கக்கூடிய;
  • கணினி கட்டமைப்புகளில்:. கட்டளைத் தொகுப்புகள், RISC அல்லது CISC, குழாய்தொடர் செயலாக்க மைய கடிகாரம் சுழற்சிகள் போன்றவை;
  • நிரலாக்க மொழிகளில் கருத்துக்கள், எடுத்துக்காட்டாக, ஒரு வரிசை கட்டுப்பாடு, நிபந்தனை மரணதண்டனை, ஹீரோக்களின், மறுநிகழ்வு, செயல்பாட்டு சிதைவு, கூறுநிலைமை, ஒத்தியக்கல் மெட்டா நிரலாக்க, நோக்கம், நிலையான துணை வகைகள், வார்ப்புருக்கள், வெளியீடு வகை, முன்மாதிரிகளை, விரிவுரைகள் ஓட்டம், monads, பெட்டிகளை நிகழ்ச்சி, தொடர்ந்து , வைல்டுகார்டுகளைப், வழக்கமான வெளிப்பாடு, பரிமாற்றத்துக்குரிய நினைவகம், மரபுரிமை, பல்லுருவத் முறையில் அமைப்புகளை, மற்றும் பல போன்றவை..
  • சுருக்க மொழிகள் மற்றும் மெய்நிகர் இயந்திரங்கள்;
  • நெறிமுறைகள் மற்றும் தரவு கட்டமைப்புகள்: வழக்கமான வெளிப்பாடுகள், பாகுபடுத்தலின்போது வழிமுறைகள், கிராபிக்ஸ் கணிதமுறைகள் டைனமிக் நிரலாக்க, பயிற்சி;
  • நிரலாக்க மொழிகளில்: தொடரியல் சொற்பொருளியலை (நிலையான மற்றும் மாறும்), ஆதரவு சூத்திரங்களின் (கட்டமைப்பு, oop, செயல்பாட்டு, தருக்க, ஸ்டாக், இணைச் மெட்டா நிரலாக்க);
  • உருவாக்கம் மென்பொருள் (தொகுப்பிகள், பொதுவாக பெரிய மற்றும் சிக்கலான): பரவல், பற்றுவதற்கு, componentize, ஏபிஐ -இடைமுகங்களைச், மறு பயன்பாடு, ஒத்திசைவு.

தொகுப்பி வடிவமைப்பு

உண்மையான மொழிபெயர்ப்பாளர் வளர்ச்சியில் ஏற்பட்ட சிக்கல்களின் சில:

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

தொகுப்பி அப்ரோச்: கூறுகள்

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

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

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

சொல் பகுப்பாய்வு (ஸ்கேனிங்)

ஸ்கேனர் டோக்கன்கள், நீக்கி இடைவெளி, கருத்துக்கள் மற்றும் விரிவடைந்து மேக்ரோக்களின் ஸ்ட்ரீமாக ஸ்ட்ரீம் மூலத்தையாவது எழுத்துகளை.

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

ஸ்கேனிங் போது ஏற்படலாம் என்று பிழைகள், சொல் அழைத்து பின்வருமாறு:

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

அலசல் (பார்சிங்)

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

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

  • கே = 5 * (7 - ஒய்;
  • J = / 5;
  • 56 = எக்ஸ் * 4.

சொற்பொருள் ஆய்வு

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

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

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

தலைமுறை

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

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

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ta.delachieve.com. Theme powered by WordPress.