හැඳින්වීම
සාමාන්ය සම්පාදකයෙකු පහත සඳහන් පියවරයන් කරයි:
- විග්රහ කිරීම: ප්රභව පෙළ වියුක්ත සින්ටැක්ස් ගසක් (AST) බවට පරිවර්තනය වේ.
- වෙනත් මොඩියුලයන් වෙත යොමු කිරීම් නිරාකරණය කිරීම (සී සම්බන්ධ වන තෙක් මෙම පියවර කල් දමයි).
- අර්ථකථන වලංගු කිරීම: තේරුමක් නැති කෘතිමව නිවැරදි ප්රකාශ ඉවත් කිරීම, උදා: ළඟා විය නොහැකි කේතය හෝ අනුපිටපත් ප්රකාශ.
- සමාන පරිවර්තනයන් සහ ඉහළ මට්ටමේ ප්රශස්තකරණය: එකම අර්ථ නිරූපණයන් සමඟ වඩාත් කාර්යක්ෂම ගණනය කිරීමක් නියෝජනය කිරීම සඳහා AST පරිවර්තනය වේ. මෙයට ඇතුළත් වන්නේ උදා: පොදු උප ප්රකාශන සහ නිරන්තර ප්රකාශන කල්තියා ගණනය කිරීම, අධික දේශීය පැවරුම් ඉවත් කිරීම ( SSA ද බලන්න ) යනාදිය.
- කේත උත්පාදනය: AST රේඛීය පහත් මට්ටමේ කේතයක් බවට පරිවර්තනය වේ, පැනීම්, රෙජිස්ටර් වෙන් කිරීම සහ ඒ හා සමාන ය. සමහර ක්රියාකාරී ඇමතුම් මෙම අවස්ථාවෙහිදී පේළිගත කළ හැකිය, සමහර ලූප පාලනය නොකළේ ය.
- පීෆෝල් ප්රශස්තිකරණය: ඉවත් කරන ලද සරල දේශීය අකාර්යක්ෂමතාවයන් සඳහා පහත් මට්ටමේ කේතය පරිලෝකනය කෙරේ.
බොහෝ නවීන සම්පාදකයින් (නිදසුනක් ලෙස, gcc සහ clang) අවසාන පියවර දෙක නැවත වරක් පුනරාවර්තනය කරයි. ආරම්භක කේත උත්පාදනය සඳහා ඔවුන් අතරමැදි පහත් මට්ටමේ නමුත් වේදිකා-ස්වාධීන භාෂාවක් භාවිතා කරයි. එවිට එම භාෂාව වේදිකා-විශේෂිත කේතයක් (x86, ARM, ආදිය) බවට පරිවර්තනය කරනු ලැබේ. මෙයට ඇතුළත් වන්නේ උදා: දෛශික උපදෙස් හැකි විට භාවිතා කිරීම, ශාඛා පුරෝකථන කාර්යක්ෂමතාව වැඩි කිරීම සඳහා උපදෙස් නැවත සකස් කිරීම යනාදිය.
ඊට පසු, වස්තු කේතය සම්බන්ධ කිරීම සඳහා සූදානම්. බොහෝ ස්වදේශීය කේත සම්පාදකයින් විසින් ක්රියාත්මක කළ හැකි නිෂ්පාදනයක් නිපදවීම සඳහා සම්බන්ධකය අමතන්නේ කෙසේදැයි දනිති, නමුත් එය සම්පාදනය කිරීමේ පියවරක් නොවේ. ජාවා සහ සී # සම්බන්ධ කිරීම වැනි භාෂාවන් මුළුමනින්ම ගතික විය හැකිය, බර පැටවීමේ වේලාවේදී වීඑම් විසින් සිදු කරනු ලැබේ.
මූලික කරුණු මතක තබා ගන්න
- එය ක්රියාත්මක කරන්න
- එය ලස්සන කරන්න
- එය කාර්යක්ෂම කරන්න
මෙම සම්භාව්ය අනුක්රමය සියලුම මෘදුකාංග සංවර්ධනයට අදාළ වන නමුත් පුනරාවර්තනය වේ.
අනුක්රමයේ පළමු පියවර කෙරෙහි අවධානය යොමු කරන්න. වැඩ කළ හැකි සරලම දේ සාදන්න.
පොත් කියවන්න!
අහෝ සහ උල්මන් විසින් රචිත ඩ්රැගන් පොත කියවන්න . මෙය සම්භාව්ය වන අතර එය අදටත් අදාළ වේ.
නවීන සම්පාදක නිර්මාණය ද පැසසුමට ලක් වේ.
මේ දේවල් ඔබට දැන් ඉතා අපහසු නම්, පළමුව විග්රහ කිරීම පිළිබඳ හැඳින්වීම් කිහිපයක් කියවන්න; සාමාන්යයෙන් විග්රහ කරන පුස්තකාලවලට හැඳින්වීම් සහ උදාහරණ ඇතුළත් වේ.
ප්රස්ථාර, විශේෂයෙන් ගස් සමඟ වැඩ කිරීමට ඔබට පහසු බවට වග බලා ගන්න. මේ දේවල් තාර්කික මට්ටමින් සෑදී ඇති දේවල් ය.
ඔබේ භාෂාව හොඳින් නිර්වචනය කරන්න
ඔබට අවශ්ය ඕනෑම අංකනයක් භාවිතා කරන්න, නමුත් ඔබේ භාෂාව පිළිබඳ සම්පූර්ණ හා ස්ථාවර විස්තරයක් ඇති බවට වග බලා ගන්න. මෙයට සින්ටැක්ස් සහ සෙමන්ටික්ස් යන දෙකම ඇතුළත් වේ.
අනාගත සම්පාදකයා සඳහා පරීක්ෂණ අවස්ථා ලෙස කේතයේ කුඩා කොටස් ඔබගේ නව භාෂාවෙන් ලිවීමට කාලයයි.
ඔබේ ප්රියතම භාෂාව භාවිතා කරන්න
පයිතන් හෝ රූබි වලින් සම්පාදකයෙකු ලිවීම හෝ ඔබට පහසු ඕනෑම භාෂාවක් ලිවීම සම්පූර්ණයෙන්ම හරි. ඔබ හොඳින් තේරුම් ගත් සරල ඇල්ගොරිතම භාවිතා කරන්න. පළමු අනුවාදය වේගවත්, කාර්යක්ෂම හෝ අංග සම්පූර්ණ විය යුතු නැත. එය අවශ්ය වන්නේ ප්රමාණවත් තරම් නිවැරදි හා වෙනස් කිරීමට පහසු වීම පමණි.
අවශ්ය නම්, සම්පාදකයෙකුගේ විවිධ අවස්ථා විවිධ භාෂාවලින් ලිවීම ද හරි ය.
බොහෝ පරීක්ෂණ ලිවීමට සූදානම් වන්න
ඔබේ මුළු භාෂාවම පරීක්ෂණ අවස්ථා වලින් ආවරණය කළ යුතුය; එය ඔවුන් විසින් අර්ථ දක්වනු ඇත. ඔබ කැමති පරීක්ෂණ රාමුව සමඟ හොඳින් දැන හඳුනා ගන්න. පළමු දිනයේ සිට පරීක්ෂණ ලියන්න. වැරදි කේත හඳුනා ගැනීමට වඩා නිවැරදි කේතය පිළිගන්නා 'ධනාත්මක' පරීක්ෂණ කෙරෙහි අවධානය යොමු කරන්න.
සියලුම පරීක්ෂණ නිතිපතා ධාවනය කරන්න. ඉදිරියට යාමට පෙර කැඩුණු පරීක්ෂණ නිවැරදි කරන්න. වලංගු කේතයක් පිළිගත නොහැකි වැරදි අර්ථකථනය කළ භාෂාවකින් අවසන් වීම ලැජ්ජාවකි.
හොඳ විග්රහයක් සාදන්න
පාර්සර් උත්පාදක යන්ත්ර බොහෝ ය . ඔබට අවශ්ය ඕනෑම දෙයක් තෝරන්න. ඔබ ඔබේ භාෂාව කාරක රීති නම් එය පමණක් එය වටිනා මුල සිටම ඔබේ ව්යාකරණ විග්රහ ලිවීමට හැකිය, නමුත් මිය ගිය සරල.
විග්රහ කරන්නා සින්ටැක්ස් දෝෂ හඳුනාගෙන වාර්තා කළ යුතුය. ධනාත්මක හා negative ණාත්මක යන පරීක්ෂණ අවස්ථා රාශියක් ලියන්න; භාෂාව නිර්වචනය කිරීමේදී ඔබ ලියූ කේතය නැවත භාවිතා කරන්න.
ඔබේ විග්රහයේ ප්රතිදානය වියුක්ත සින්ටැක්ස් ගසකි.
ඔබේ භාෂාවට මොඩියුල තිබේ නම්, විග්රහයේ ප්රතිදානය ඔබ ජනනය කරන 'වස්තු කේතයේ' සරලම නිරූපණය විය හැකිය. ගසක් ගොනුවකට දැමීම සහ එය ඉක්මනින් පැටවීම සඳහා සරල ක්රම ඕනෑ තරම් තිබේ.
අර්ථකථන වලංගු කරන්නෙකු සාදන්න
බොහෝ විට ඔබේ භාෂාව ඇතැම් සන්දර්භයන්හි තේරුමක් නැති කෘතිමව නිවැරදි ඉදිකිරීම් සඳහා ඉඩ ලබා දේ. උදාහරණයක් ලෙස එකම විචල්යයේ අනුපිටපත් ප්රකාශයක් හෝ වැරදි වර්ගයක පරාමිතියක් පසු කිරීම. වලංගු කරන්නා ගස දෙස බලන විට එවැනි දෝෂ හඳුනා ගනී.
වලංගු කරන්නා ඔබේ භාෂාවෙන් ලියා ඇති වෙනත් මොඩියුලයන් වෙත යොමු කිරීම් නිරාකරණය කරයි, මෙම අනෙකුත් මොඩියුලයන් පටවා වලංගු කිරීමේ ක්රියාවලියේදී භාවිතා කරයි. උදාහරණයක් ලෙස, මෙම පියවර මඟින් වෙනත් මොඩියුලයකින් ශ්රිතයක් වෙත ලබා දුන් පරාමිති ගණන නිවැරදි බව සහතික කරනු ඇත.
නැවතත්, පරීක්ෂණ අවස්ථා රාශියක් ලියා ධාවනය කරන්න. සුළු කාරණා බුද්ධිමත් හා සංකීර්ණ ලෙස දෝශ නිරාකරණයේදී අත්යවශ්ය වේ.
කේතය ජනනය කරන්න
ඔබ දන්නා සරලම ශිල්පීය ක්රම භාවිතා කරන්න. බොහෝ විට if
HTML අච්චුවක් මෙන් නොව සැහැල්ලු පරාමිතිගත කේත අච්චුවකට භාෂා ව්යුහයක් ( ප්රකාශයක් වැනි ) සෘජුවම පරිවර්තනය කිරීම හරි ය .
නැවතත්, කාර්යක්ෂමතාව නොසලකා හරිමින් නිවැරදිභාවය කෙරෙහි අවධානය යොමු කරන්න.
වේදිකාවක්-ස්වාධීන පහත් මට්ටමේ වීඑම් එකක් ඉලක්ක කරන්න
දෘඩාංග විශේෂිත තොරතුරු කෙරෙහි ඔබ දැඩි උනන්දුවක් දක්වන්නේ නැත්නම් ඔබ පහත් මට්ටමේ දේවල් නොසලකා හරිනු ඇතැයි මම සිතමි. මෙම විස්තර ඉතා දරුණු හා සංකීර්ණ ය.
ඔබේ විකල්ප:
- LLVM: කාර්යක්ෂම යන්ත්ර කේත උත්පාදනය සඳහා ඉඩ ලබා දේ, සාමාන්යයෙන් x86 සහ ARM සඳහා.
- සීඑල්ආර්: ඉලක්ක .නෙට්, බොහෝ දුරට x86 / වින්ඩෝස් මත පදනම් වූ; හොඳ JIT එකක් තියෙනවා.
- JVM: ජාවා ලෝකය ඉලක්ක කරයි, තරමක් බහු ආකෘතියක්, හොඳ JIT එකක් ඇත.
ප්රශස්තිකරණය නොසලකා හරින්න
ප්රශස්තිකරණය දුෂ්කර ය. සෑම විටම පාහේ ප්රශස්තිකරණය නොමේරූ ය. අකාර්යක්ෂම නමුත් නිවැරදි කේත ජනනය කරන්න. එහි ප්රති ing ලයක් ලෙස ලැබෙන කේතය ප්රශස්තිකරණය කිරීමට පෙර මුළු භාෂාවම ක්රියාත්මක කරන්න.
ඇත්ත වශයෙන්ම, සුළු සුළු ප්රශස්තකරණයන් හඳුන්වා දීම හරි. නමුත් ඔබේ සම්පාදකයා ස්ථාවර වීමට පෙර කපටි, කෙස් කළඹෙන් වළකින්න.
ඉතින් කුමක් ද?
මේ සියල්ල ඔබට බිය උපදවන දෙයක් නොවේ නම්, කරුණාකර ඉදිරියට යන්න! සරල භාෂාවක් සඳහා, එක් එක් පියවර ඔබ සිතනවාට වඩා සරල විය හැකිය.
ඔබේ සම්පාදකයා විසින් නිර්මාණය කරන ලද වැඩසටහනකින් 'හෙලෝ වර්ල්ඩ්' දැකීම උත්සාහ කිරීම වටී.