පරිගණක, වැඩසටහන්කරණය
පරිවර්තකය ... පරිවර්තකයන්ගේ වර්ග. වැඩසටහන පරිවර්තනය කරන්න සහ පරිවර්ථනය කරන්න
පුද්ගලයන් වැනි වැඩසටහන්, එක් භාෂාවක් සිට තවත් භාෂාවක් පරිවර්තනය කිරීම සඳහා පරිවර්තකයෙකු හෝ පරිවර්තකයෙකු අවශ්ය වේ.
මූලික සංකල්ප
මෙම වැඩසටහන පරිගණක ගණනය කිරීම් සඳහා වාග් විද්යාත්මක නිරූපණයක් වේ: i → P → P (i). භාෂණ පරිවර්තකය යනු ක්රමලේඛයේ P සහ සමහර ආදාන දත්ත x මඟින් ලබා දෙන ආදානයකි. එය P මත x: I (P, x) = P (x) වේ. සියලු වැඩ සටහන් ක්රියාත්මක කිරීමේ හැකියාව ඇති එකම පරිවර්තකය (විධිමත් ක්රමයේ නිරූපණය කළ හැකි) යනු ටියුරිංහි ඉතා ගැඹුරු හා වැදගත් සොයා ගැනීමකි.
ප්රොසෙසර යන්ත්රය භාෂාවේ වැඩසටහන් පරිවර්තකය වේ. ඉහළ මට්ටමේ භාෂාවන් සඳහා පරිවර්ථකයින් ලිවීම සඳහා සාමාන්යයෙන් අධික වියදමක් දැරීමට සිදුවීම නිසා ඒවා පරිවර්ථනය කිරීම පහසුය.
සමහර පරිවර්තකයන්ට ඉතා අමුතුම නම් ඇත:
- එක්රැස්කර් යන්ත්රෝපකරණ භාෂාවෙන් පරිගණක භාෂාවට පරිවර්තනය කරයි.
- පරිවර්තකයා ඉහළ පෙළේ භාෂාවකින් පහළ මට්ටමේ භාෂාවකින් පරිවර්තනය කරයි.
පරිවර්තකයෙකු යනු කිසියම් භාෂාවක S භාෂාවේ ක්රමලේඛයක් ලෙස පිළිගත් වැඩසටහනක් සහ T හි වැඩසටහන් වැඩසටහනක් පිළිගන්නා ක්රමවේදයක් නම්, එම දෙකම එකම semantics ඇති බව P → X → Q. එනම්, ∀x. P (x) = Q (x).
ඔබ මුළු වැඩසටහනම පරිවර්ථනය කරන ලද දෙයක් බවට පරිවර්ථනය කළහොත්, මෙය ක්රියාත්මක කිරීමට පෙර සම්පාදනය කිරීම හෝ AOT-සම්පාදනය යනුවෙන් හැඳින්වේ. AOT සංයුක්ත තැටිය අනුක්රමිකව භාවිතා කළ හැකි අතර, ඉන් පසුව බොහෝ විට එක් ඇසර්ලර් එකක් වේ:
ප්රභවය කේතය → Compiler (සම්පාදකය) → ඇසුරේලර් කේතය → ඇසිරියෙල් (පරිවර්තක) → පරිගණක කේතය → CPU (පරිවර්ථකයා).
අනෙකුත් එකතු කරන ලද කොටස් ක්රියාත්මක කරන විට වැඩසටහනෙහි කොටසක් කොටසක් පරිවර්තනය කරනු ලබන්නේ නම් අන්තර්ජාලය හෝ ගතික සම්පාදනය සිදු වේ. JIT-පරිවර්තකයන් ඔවුන් විසින් දැනටමත් කර ඇති දෙය මතක තබා ගැනීම සඳහා, මූල කේතය නැවත නැවතත් නැවත නොකිරීමට. රාමුකාලීන පරිසරයේ හැසිරීම මත පදනම්ව, අනුවර්තනය කරන ලද සම්පාදනය සහ ප්රතිවර්තනය කිරීම පවා ඔවුනට හැකිය.
බොහෝ භාෂාවන් පරිවර්තනය කිරීමේදී කේතය ක්රියාත්මක කිරීමට සහ නව කේතය සකසා ගැනීම සඳහා බොහෝ භාෂාවන් ඔබට ඉඩ සලසයි.
පරිවර්තන වේදිකා
විශ්ලේෂණය සහ සංශ්ලේෂණ අවධීන් වලින් පරිවර්තනය වන්නේ:
මූලාශ්ර කේත → විශ්ලේෂකය → සංකල්පීය දර්ශනය → ජනකය (සංස්ෙල්ෂක) → ඉලක්ක කේතය.
පහත දැක්වෙන හේතු නිසා මෙය සිදු වේ:
- වෙනත් ඕනෑම ක්රමයක් සුදුසු නොවේ. වචනයේ වචන පරිවර්ථනය සරලව වැඩ කරන්නේ නැත.
- හොඳ ඉංජිනේරුමය විසඳුමකි: M මූලාශ්ර භාෂා සහ N ඉලක්ක භාෂාවන් සඳහා පරිවර්තකයන් ලිවීමට ඔබට අවශ්ය නම්, ඔබ M + N සරල වැඩසටහන් පමණක් (semicompilers) පමණක් ලියන්න M × N සංකීර්ණ (සම්පූර්ණ පරිවර්තකයන්) නොවේ.
කෙසේ වෙතත්, ප්රායෝගිකව, සංකල්පමය නිරූපණය ඉතාම කලාතුරකින් ප්රකාශයට පත් කළහැකි සහ ප්රභූ භාෂා සියල්ලම ආවරණය කිරීම සඳහා ප්රමාණවත් තරම් ප්රබල හා බලගතු ය. ඔවුන්ගෙන් සමහරුන්ට මෙය සමීප විය හැකිය.
නියම පරිවර්තකයන් අදියර ගණනාවක් හරහා ගමන් කරයි. ඔබගේම සම්පාදකයක් නිර්මාණය කරන විට, දර්ශන සහ ජනක යන්ත්ර සෑදීමේදී පුද්ගලයින් දැනටමත් සිදු කර ඇති සියලු කාර්යය නැවත නැවත කිරීමට අවශ්ය නොවේ. ඔබේ භාෂාව සෘජුවම JavaScript හෝ C ලෙස පරිවර්තනය කළ හැකි අතර ඉතිරිය ඉතිරි කිරීම සඳහා දැනට පවතින JavaScript එන්ජින් සහ C සම්පාදකයන් භාවිතා කළ හැක. ඔබට දැනට පවතින අතරමැදි දර්ශන සහ අථත්ය යාන්ත්රණ භාවිතා කළ හැකිය .
පරිවර්තකයාගේ වාර්තාව
පරිවර්තකයකු යනු භාෂා තුනක් සම්බන්ධ වැඩසටහන් හෝ තාක්ෂණික මෙවලමක් වේ: මූලාශ්රය, ඉලක්කය සහ මූලික වේ. ටී-පෝරමය තුළ ලිවිය හැකිය. වම් පසින් මූලය, දකුණු පසින් ඉලක්කය සහ පහළ පාදය දැක්විය හැකිය.
සම්පාදක වර්ග තුනක් තිබේ:
- පරිවර්තකයෙකු යනු ස්වකීය සම්පාදකයකු එහි මූලික භාෂාවට මූලිකව අනුකූල නම් වේ.
- මූලික භාෂාවට සමාන ඉලක්කය වන පරිවර්තකය ස්වයං නේවාසිකයා ලෙස හැඳින්වේ.
- පරිවර්තකයෙකු යනු විවිධ ඉලක්ක භාෂාවක් සහ මූලික භාෂාවක් තිබේ නම්, හරස් පරිවර්තකයෙකි.
මෙය වැදගත් වන්නේ ඇයි?
ඔබ කිසි විටෙක සැබෑ පරිවර්තකයක් නොතිබුණත්, එය නිර්මාණය කිරීම සඳහා තාක්ෂණය ගැන දැන ගැනීම හොඳය, මන්ද මෙය සඳහා භාවිතා කරන සංකල්ප සෑම තැනකම භාවිතා කර ඇත, නිදසුනක් ලෙස:
- පෙළ හැඩගැසීම;
- දත්ත සමුදායන් සඳහා විමසුම් භාෂාවන් ;
- ව්යාප්ත පරිගණක නිර්මිතයන්;
- සාමාන්යකරණය කළ ප්රශස්තිකරණ ගැටළු;
- චිත්රක අතුරුමුහුණත්;
- Scripting languages;
- පාලක;
- අථ්ය යන්ත;
- පරිගණක පරිවර්තන.
මීට අමතරව, ඔබ විසින් preprocessors, builders, loaders, debuggers, or profilers ලිවීමට අවශ්ය නම්, ඔබ විසින් සම්පාදකයේ ලිවීමේදී සමාන පියවරයන් අනුගමනය කළ යුතුය.
භාෂාවක් සඳහා පරිවර්තකයෙකු නිර්මාණය කිරීම නිසා එහි වඩා හොඳ ක්රම ලේඛන ලිවීමට ඉගෙන ගත හැකි අතර, එහි සියුම් හා සැකැස්ම පිළිබඳ වඩා හොඳ අවබෝධයක් ලබා ගත හැකිය. පරිවර්තනයේ සාමාන්ය ප්රතිපත්ති ඉගෙනීම ද හොඳ භාෂා නිර්මාණකරුවකු වීමට හැකි වේ. එය එතරම් වැදගත් වන්නේ, එය ඵලදායී ලෙස ඉටු කළ නොහැකි නම්, භාෂාව කොතරම් තියුණුද?
පුළුල් තාක්ෂණය
පරිගණක විද්යාවේ විවිධ විෂය ක්ෂේත්ර ගණනාවක් සම්පාදනය කරයි:
- විධිමත් භාෂා න්යාය: ව්යාකරණ, විලංගුකරණය, ගණනය කිරීම;
- පරිගණක නිර්මාණ ශිල්පය: උපදෙස් කට්ටල, RISC හෝ CISC, පයිප්පලයින්, කර්නල, ඔරෙලෝසු චක්ර ආදිය;
- ක්රමලේඛන භාෂාවන් පිළිබඳ සංකල්ප: නිදසුනක් ලෙස අනුක්රමය පාලනය කිරීම, කොන්දේසිගතව ක්රියාත්මක කිරීම, ප්රතිඵලය, ප්රතිචක්රීකරණය, ක්රියාකාරී විඝටනය, මොඩියුලය, සමමුහුර්තකරණය, මාපක වැඩසටහන්කරණය, විෂය පථය, නියත, උපතිස්, සැකිලි, නිමැවුම් වර්ගය, මූලාකෘති, annotations, threads, monads, , වයිල්ඩ්කාඩ්, නිරන්තර ප්රකාශනය, සංචිත මතකය, උරුමය, බහුරූපතා, පරාමිතික ආකෘතීන් ආදිය.
- සංක්ෂිප්ත භාෂා සහ අතාත්වික යන්ත;
- ඇල්ගොරිතම සහ දත්ත ව්යුහයන්: සාමාන්ය ප්රකාශනය, ඇල්ගොරිතම විග්රහ කිරීම, ග්රැෆික් ඇල්ගොරිතම, ගතික වැඩසටහන්කරණය, ඉගෙනීම;
- ක්රමලේඛන භාෂා: syntax, semantics (ස්ථිතික සහ ගතික), paradigms සඳහා සහයෝගය (ව්යුහමය, OOP, ක්රියාකාරී, තර්කානුකූල, ස්ක්ක්, සමගාමීත්වය, metaprogramming);
- මෘදුකාංග නිර්මාණය (සංයුක්තකරණය, රීතියක් ලෙස, විශාල හා සංකීර්ණ): ප්රාදේශීයකරණය, ගබඩා කිරීම, සංකීර්ණකරණය, API-අතුරුමුහුණත්, නැවත භාවිතය, සමමුහුර්තකරණය.
සම්පාදකය නිර්මාණය කිරීම
සැබෑ පරිවර්තකයෙකු වර්ධනය කිරීමේදී පැන නගින ගැටළු කිහිපයක්:
- මූලාශ්ර භාෂාව සමඟ ගැටළු. එය සංයුක්ත කිරීම පහසුය ද? පෙර සැකසුමක් තිබේද? වර්ග හැසිරවිය හැක්කේ කෙසේද? පුස්තකාල තිබේද?
- සංගෘහිත සමීකරණ අනුමත කිරීම: තනි හෝ බහු-pass
- අපේක්ෂිත ප්රශස්තිකරණය. කුඩා හා සනීපාරක්ෂාව සහිත ක්රමලේඛයේ ඉක්මන් හා අපද්රව්ය පරිවර්තනය සාමාන්ය විය හැකිය. අතිරික්ත ප්රශස්තිකරණය සම්පාදක වේගය මන්දගාමී වනු ඇත, නමුත් හොඳම වේගය ධාවන කාලය දී එය වටිනවා විය හැකිය.
- අවශ්ය දෝෂ හඳුනාගැනීමේ අනුපාතය. පරිවර්තකයා පළමු වැරැද්ද මත නතර කළ හැකිද? ඔහු නතර කළ යුත්තේ කවදාද? වැරදි නිවැරදි කිරීම සඳහා ඔබ පරිවර්තක විශ්වාස කරන්නේද?
- මෙවලම් ලබාගත හැකිය. මූලාශ්ර භාෂාව ඉතා කුඩා නොවේ නම්, ස්කෑනරය සහ විශ්ලේෂක ජනකය අනිවාර්ය වේ. කෝඩ් උත්පාදක ජනක යන්ත්ර ද පවතී. නමුත් ඒවා බහුල නොවේ.
- උත්පාදනය සඳහා ඉලක්ක කේතය. ඔබ පිරිසිදු, වැඩිදියුණු කළ හෝ අථත්ය යාන්ත්රික කේතයෙන් තෝරා ගත යුතුය. නැතහොත්, LLVM, RTL හෝ JVM වැනි ජනප්රිය අතරමැදි දර්ශන නිර්මාණය කරන ආදානයකි. නැතහොත් මූලාශ්රය හෝ කේතය තුළ මූලාශ්ර කේතයේ මූලාශ්රයකින් පරිවර්තනය කරන්න.
- ඉලක්ක කේතයේ ආකෘතිය. සංයුක්ත භාෂාවක්, ජංගම පරිගණකයේ කේතය, මතකයේ තිබෙන යන්ත්රයේ කේතය තෝරාගත හැකිය.
- Perenatselivanie. බොහෝ ජනක යන්ත්ර සමඟ පොදු ආදාන කොටසක් ඇත. එම හේතුව නිසා බොහෝ ආදාන කොටස් සඳහා එක් උත්පාදකයක් සෑදිය යුතු වේ.
සංයුක්තකාර ගෘහ නිර්මාණ ශිල්පය: සංරචක
යාන්ත්රික කේතය ජනනය කරන පරිවර්තකයාගේ ප්රධාන ක්රියාකාරී කොටස් (ප්රතිදාන ක්රමලේඛය C වැඩසටහන හෝ අථත්ය යාන්ත්රණය නම්, පියවර කීපයක් අවශ්ය නොවේ):
- ආදාන වැඩසටහන (සංඥා දහරාවක්) ස්කෑනරය (ලක්ෂික් විශ්ලේෂකය) ඇතුළු වන අතර එය ටෝකන් වල ප්රවාහයක් බවට පරිවර්තනය කරයි.
- Parser (parser) මඟින් ඔවුන් වෙතින් සංක්ෂිප්ත syntax ගසක් නිර්මාණය කරයි.
- විචල්ය විශ්ලේෂකය සාරාත්මක තොරතුරු දිරාපත් වන අතර, ගස් වල නෝට්ටු පරික්ෂා කරයි. ප්රතිඵලයක් වශයෙන්, අර්ථකථන ප්රස්ථාරයක් නිර්මාණය කර ඇත - අතිරේක ගුණාංග සහ ස්ථාපිත යොමු කිරීම් සහිත වියුක්ත සංස්කරණ ගසකි.
- අතරමැදි කෝඩ් උත්පාදක ප්රවාහ ප්රස්ථාරයක් නිර්මාණය කරයි.
- ස්වයංක්රීය-ස්වාධීන කේත ප්රශස්තකරණය දේශීය (අවකාශය තුල) සහ ගෝලීය (සියලු බ්ලොක්) ප්රශස්තිකරණයන්, මූලිකවම අනුක්රමය තුළ ඉතිරිව පවතී. අතිරික්ත කේත අඩු කරයි සහ සංකීර්ණ ගණනය කිරීම්. ප්රතිඵලය වෙනස් වූ ප්රවාහ ප්රස්ථාරයකි.
- ඉලක්ක සංකේත විදුලි උත්පාදක (Generic) කේබල් උත්පාදක අච්චු (link block) සම්බන්ධතාවය හුවමාරු කරගනිමින්, අස්ථාපනය කිරීමේදී අක්ෂර ගොනුවක් නිර්මාණය කිරීම (සමහර විට අකාර්යක්ෂමයි).
- මැෂින්-ස්වාධීන linker ප්රශස්තකය ලේඛන සහ උපලේඛන විධාන අතර මතකය වෙන් කරයි. ඇලුමිනියම් යන්ත්රයේ යෙදීම්වල යෙදීමේදී උපකරණයක් ප්රත්යාවර්තව යොදාගනී.
මීට අමතරව, දෝෂ හඳුනාගැනීමේ උප පද්ධතීන් සහ සංකේතාංකන වගු කළමනාකරු භාවිතා වේ.
ලෙක්සලික් විශ්ලේෂණය (ස්කෑන් කිරීම)
ස්කෑනරය මූල කේතයේ අක්ෂර ටෝකන වල ප්රවාහයක් බවට පරිවර්තනය කිරීම, අවකාශය ඉවත් කිරීම, විවරණ සහ ව්යාප්ති මැක්රෝස් පරිවර්තනය කරයි.
ස්කෑනර් බොහෝ විට ලේඛන, ආදේශක, රේඛීය පෝෂණ සහ උත්ප්රේරිත අදහස් සැලකිල්ලට භාජනය නොකිරීම වැනි ගැටළු වලට මුහුණපාති.
ස්කෑන් කිරීමේදී සිදුවිය හැකි දෝශයන් ශබ්දකෝෂයක් ලෙස හැඳින්වේ:
- අකාරාදී පිළිවෙලට නැති අකුරු;
- වචනයක් හෝ අකුරක් තුළ අක්ෂර ගණන ඉක්මවා;
- සංවෘත චරිතයක් හෝ වචනයක් නැත;
- විවරණයෙහි ගොනුවේ අවසානය.
සින්ටැක්ස් විශ්ලේෂණය (විශ්ලේෂණය)
ව්යාකරණ විග්රහකය ටෝකන අනුක්රමයක් සංක්ෂිප්ත syntax ගණයකට පරිවර්තනය කරයි. එක් එක් වෘක්ෂය නම් කරන ලද ක්ෂේත්රයක වස්තුවක් ලෙස සුරක්ෂිත කර ඇත. ඒවායින් බොහෝමයක් ඒවායේ ගස් වල නෝඩය. මෙම අදියරේ දී කිසිදු චක්රයක් නොමැත. ව්යාකරණ විග්රහයක් නිර්මාණය කරන විට, ව්යාකරණයේ සංකීර්ණත්වය (LL හෝ LR) සංකීර්ණ මට්ටමේ අවධානය යොමු කළ යුතු අතර, ව්යාකූලත්වය ඉවත් කිරීම සඳහා කිසියම් නීති තිබේ දැයි සොයා බැලීම. ඇතැම් භාෂාවන් අර්ථ විග්රහ කිරීම අවශ්ය වේ.
මෙම අදියරේදී ඇතිවූ දෝශයන් වර්ණ වැරදි ද හැඳින්වේ. උදාහරණයක් ලෙස:
- K = 5 * (7 - y;
- J = / 5;
- 56 = x * 4.
සංකල්ප විශ්ලේෂණය
අර්ථකථන විශ්ලේෂණයන් තුළදී පිළිගත හැකි නීති පිරික්සා බැලීමේදී සින්ටැක්ස් ගසෙහි කොටස් සවි කිරීම (නාමාවලීන් නිර්දේශ කිරීම, ආකෘති පත් කිරීම සඳහා මෙහෙයුම් ඇතුල් කිරීම ආදිය) අර්ථ ශේෂ ප්රස්ථාරයක් සෑදීමට අවශ්ය වේ.
නිසැකවම, විවිධ භාෂා සඳහා යෝග්යතා රීති මාලාවක් වෙනස් වේ. ජාවා-භාෂාවන් සම්පාදනය කරන්නේ නම්, පරිවර්තකයන්ට සොයා ගත හැක:
- එහි විෂය පථය තුළ විචල්යයේ විවිධ ප්රකාශයන්;
- ප්රකාශය කිරීමට පෙර විචල්යයක් වෙත යොමු කිරීම;
- නොඑවා ඇති නමට යොමු කිරීම;
- ප්රවේශ්යතා නීතිරීති උල්ලංඝනය කිරීම;
- ක්රමවේදය අමතන විට අති විශාල හෝ ප්රමාණවත් තරම් තර්ක සංඛ්යාවක් නැත;
- නොගැලපීම වර්ගය.
පරම්පරාව
අතරමැදි කේතයෙහි පරම්පරාව පාදක කොටු වලට එකතු කර ඇති සංචාලකවලින් සමන්විත ප්රවාහ ප්රස්ථාරයකි.
කේත ජනනය සැබෑ යන්ත්ර සූත්ර නිපදවයි. RISC-යන්ත්ර සඳහා සාම්ප්රදායික සම්පාදනය කරන විට පළමු අදියර මගින් අථත්ය නාම ලේඛන අසීමිත සංඛ්යාවක් සහිත එක්රැස්කිරීමක් නිර්මාණය කරයි. CISC යන්ත්ර සඳහා, මෙය බොහෝ විට සිදු නොවේ.
Similar articles
Trending Now