Compiler: တည်းဖြတ်မှု မူကွဲများ

အရေးမကြီး ဘော့ - စာသားများကို အလိုအလျောက် အစားထိုးခြင်း (-ဖေါ် +ဖော်)
အရေးမကြီး ဘော့ - စာသားများကို အလိုအလျောက် အစားထိုးခြင်း (-။ပ +။ ပ, -။က +။ က, -။အ +။ အ, -။န +။ န, -။ထ +။ ထ, -။ရ +။ ရ, -။ဘ +။ ဘ, -။တ +။ တ)
 
စာကြောင်း ၁ -
{{Retaining title}}
ကွန်ပိုင်လာသည် ပရိုဂရမ်စုဖွဲ့မှုတစ်ခုဖြစ်ပြီး ပရိုဂရမ်မင်းဘာသာစကားတစ်ခုခုဖြင့်ရေးသားထားသော ဆို့ဖ်ကုတ်ဒ်များကို ကွန်ပြူတာနားလည်သောဘာသာစကား(object code ဟုခေါ်သော ၁ နှင့် ၀ သာလျှင်ပါသောပုံစံ)သို့ ပြောင်းလဲပေးသည့်အရာဖြစ်သည်။အဓိကအချက်မှာပြောင်းလဲပေးသည့်အရာဖြစ်သည်။ အဓိကအချက်မှာ ဆို့ဖ်ကုတ်ဒ် ကို [[executable]]ပရိုဂရမ်သို့ပြောင်းခြင်းပင်ဖြစ်သည်။
ကွန်ပိုင်လာဟူသော အမည်မှာ [[အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကား]] ဖြင့်ရေးသားထားသော ဆို့ဖ်ကုတ်ဒ်များကို [[အဆင့်နိမ့်ပရိုဂရမ်မင်းဘာသာစကား]] သို့
(assembly languageသို့machine code)ပြောင်းခြင်းဖြစ်သည်။ကွန်ပြူတာတွင်ပြောင်းခြင်းဖြစ်သည်။ ကွန်ပြူတာတွင် ကွန်ပိုင်လာဖြင့်ပြောင်းထားသော ပရိုဂရမ်ကို မောင်းနှင်နိုင်မည်ဆိုပါက အဆိုပါကွန်ပြူတာ၏ စီပီယူသို့ စက်မောင်းနှင်စနစ်သည် ကွန်ပိုင်လာလုပ်ဆောင်နေသော စက်မောင်းနှင်စနစ်နှင့် မတူညီပါက ထိုကွန်ပိုင်လာကို [[cross-compiler]]ဟုခေါ်ဆိုသည်။အဆင့်နိမ့်ပရိုဂရမ်မင်းဘာသာစကားမှဟုခေါ်ဆိုသည်။ အဆင့်နိမ့်ပရိုဂရမ်မင်းဘာသာစကားမှ အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားသို့ ပြောင်းသည့်အရာကို [[decompiler]] ဟုခေါ်ဆိုကြသည်။အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားအချင်းချင်းဟုခေါ်ဆိုကြသည်။ အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားအချင်းချင်း ပြောင်းလဲခြင်းကို
([[language translater]] ,source to source translater or language converter )ဟုခေါ်ဆိုကြသည်။[[rewriter]] သည်လည်း ပရိုဂရမ်တစ်ခုဖြစ်ပြီး ဘာသာစကားပြောင်းလဲခြင်းမရှိဘဲ ဖော်ပြမှုပုံစံကိုသာ ပြောင်းလဲပေးသောအရာဖြစ်သည်။
ကွန်ပိုင်လာသည် [[lexical analysis]], [[preprocessing]], [[parsing]], ([[Syntax-directed translation]]), [[code generation]], and [[code optimization]] စသော လုပ်ငန်းများ လုပ်ဆောင်မှုပြုသည်။
စာကြောင်း ၈ -
 
==သမိုင်း==
အစောပိုင်းတွင် ကွန်ပြူတာများအတွက် ဆော့ဝဲများကို assembly language ဖြင့်သာရေးသားကြရသည်။ကွန်ပိုင်လာတည်ထွင်ရေးသားခြင်းထက်ဖြင့်သာရေးသားကြရသည်။ ကွန်ပိုင်လာတည်ထွင်ရေးသားခြင်းထက် စီပီယူအမျိုးအစားများစွာတွင် ဆော့ဖ်ဝဲများပြန်လည်အသုံးပြုနိုင်စွမ်းသည် တနဖိုးကြီးလှသော်လည်း အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားကို တီထွင်နိုင်ခြင်း မရှိကြသေးချေ။ထိုကြောင့်မရှိကြသေးချေ။ ထိုကြောင့် ထိုခောတ်အခါက ပထမဆုံး ကွန်ပိုင်လာ ဒီဇိုင်းဆွဲနိုင်ရန်
အတွက် ကန့်သတ်မှုဖြစ် နေသော[[မန်မိုရီ]]([[memory]])သည် ကွန်ပြူတာများအတွက် နည်းပညာစိန်ခေါ်မှုသဖွယ် ဖြစ်နေခဲ့သည်။၁၉၅၀နှစ်ကုန်အရောက်တွင်
မရှင်းပေါ်တွင်မှီခိုခြင်းမရှိသော ပထမဆုံး ပရိုဂရမ်းမင်းဘာသာစကား အဆိုပြုချက်ထွက်ပေါ်လာသည်။တစ်ဆက်ထဲမှာပင်အဆိုပြုချက်ထွက်ပေါ်လာသည်။ တစ်ဆက်ထဲမှာပင် စမ်းသပ်အဆင့် ကွန်ပိုင်လာများပေါ်ပေါက်ခဲ့သည်။ပထဆုံးကွန်ပိုင်လာများပေါ်ပေါက်ခဲ့သည်။ ပထဆုံး ကွန်ပိုင်လာကို ၁၉၅၂ ခုနှစ်တွင် [[Grace Hopper]] မှ [[A-0 programming language]]အတွက် ရေးသားခဲ့သည်။
[[IBM]] တွင် [[John Backus]] ဦးဆောင်မှုဖြင့် [[FORTRAN]] အဖွဲ့မှ ပြီးပြည့်စုံသော ကွန်ပိုင်လာကို ၁၉၅၇ ခုနှစ်တွင် ဂုဏ်ယူစွာ မိတ်ဆက်နိုင်ခဲ့သည်။
၁၉၆၀တွင် [[COBOL]]သည်များပြားလှသောဗိသုကာဖွဲ့စည်းပုံများပါသည့် ကွန်ပိုင်လာတွင် ကွန်ပြူတာနားလည်သောပုံစံသို့ပြောင်းရန် အစောဆုံး ဘာသာစကားဖြစ်သည်။
 
ကွန်ပြူတာဘာသာစကားများအသစ်ပေါ်ပေါက်လာခြင်းနှင့်ကွန်ပြူတာဖွဲ့စည်းမှုဗိသုကာများ ရှုပ်ထွေးတိုးတက်လာခြင်းနှင့်အတူ ကွန်ပိုင်လာများသည်လည်း ပို၍ရှုပ်ထွေးလာခဲ့သည်။အစောပိုင်းပို၍ရှုပ်ထွေးလာခဲ့သည်။ အစောပိုင်း ကွန်ပိုင်လာများကို assembly language ဖြင့်သာရေးသားကြသည်။ပထမဆုံးဖြင့်သာရေးသားကြသည်။ ပထမဆုံး [[self-hosting]] ကွန်ပိုင်လာကို ၁၉၆၂ခုနှစ်တွင်
[[Lisp]] အတွက် [[MIT]] မှ Tim Hart နှင့် Mike Levin တို့ကဖန်တီးခဲ့သည်။၎င်းသည် ၁၉၇၀ ခုနှစ်အထိ ဘာသာစကားတို့တွင် ကွန်ပိုင်လာတို့ကိုပိုမိုကောင်းမွန်စေရန် အဓိကလက်တွေ့ကျခဲ့သော်လည်း [[Pascal]] နှင့် [[C]] တို့သည် ဘာသာစကားတို့အတွက် ရွေးချယ်ခဲ့ကြသည့်အတွက် ကျော်ကြားခဲ့ကြသည်။self-hosting ကွန်ပိုင်လာတည်ဆောက်ရာတွင် [[bootstrapping]] ဟုခေါ်သော ပြဿနာရှိသည်။ဘာသာစကားများအတွက်ပြဿနာရှိသည်။ ဘာသာစကားများအတွက် အဆိုပါ ကွန်ပိုင်လာအားအသုံးပြုနိုင်ရန် ပထမဆုံးအနေဖြင့် အခြားဘာသာစကားများဖြင့်ရေးထားသော ကွန်ပိုင်လာဖြင့် ကွန်ပိုင်းလုပ်ခြင်း (သို့) [[interpreter]]တွင်မောင်းနှင်
နေသောကွန်ပိုင်လာဖြင့်(Hart and Levin's Lisp compiler) ကွန်ပိုင်းလုပ်ခြင်းကို ဦးစွာလုပ်ဆောင်ရသည်။
 
စာကြောင်း ၂၃ -
ကွန်ပြူတာဟာဒ်ဝဲဖွဲ့စည်းမှုဗိသုကာမတူညီသည့်ပုံစံတွင် ပရိုဂရမ်များကို ပြန်လည်ရေးသားပြုပြင် ကြရသည်။
 
FORTRAN နောက်ပိုင်းပေါ်လာသည့် အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားများဖြစ်သော COBOL, C, နှင့် BASIC တို့တွင် [[ကွန်ပျူတာ_ပရိုဂရမ်မာ|ပရိုဂရမ်မာ]] များသည် မရှင်းပေါ်မှီခိုခြင်းမရှိသော ပရိုဂရမ်များကိုရေးသားနိုင်ကြသည်။ကွန်ပိုင်လာများသည်ပရိုဂရမ်များကိုရေးသားနိုင်ကြသည်။ ကွန်ပိုင်လာများသည် အဆင့်မြင့်ပရိုဂရမ်မင်းဘာသာစကားများကို ဟာဒ်ဝဲများအတွက် မရှင်း
ဘာသာစကားတွင် ဦးတည်ချက်ထားသော ပရိုဂရမ်များဆီသို့ ပြောင်းလဲပေးသည်။ ထိုပရိုဂရမ်များကို အသုံးပြုသူများမှ အသုံးပြုနိုင်ပြီဖြစ်သည်။
 
စာကြောင်း ၃၃ -
#assembler နှင့်/သို့ linker တို့၏ လုပ်ထုံးလုပ်နည်းများအရ ထွက်ပေါ်လာသောအဖြေများအား စီစဉ်ပေးခြင်း တို့ပါဝင်သည်။
 
ကွန်ပိုင်လာတွင် အဓိကအစိတ်အပိုင်း (၃)ပိုင်းပါဝင်သည်။ရှေ့ပိုင်း၊အလယ်ပိုင်းနှင့်နောက်ဆုံးပိုင်းတို့ဖြစ်ပိုင်းပါဝင်သည်။ ရှေ့ပိုင်း၊အလယ်ပိုင်းနှင့်နောက်ဆုံးပိုင်းတို့ဖြစ် ကြသည်။
 
ရှေ့ဆုံးပိုင်းသည် ရေးသားထားသော ပရိုဂရမ်များအား ပရိုဂရမ်မင်းဘာသာစကား၏ ရေးသားမှုပုံစံတို့နှင့် ကိုက်ညီမှုရှိမရှိစစ်ဆေးသည်။အဆိုပါအချက်တွင်ကိုက်ညီမှုရှိမရှိစစ်ဆေးသည်။ အဆိုပါအချက်တွင် ဥပဒေနှင်ကိုက်ညီမှု ရှိသည်ဖြစ်စေ၊မရှိသည်ဖြစ်စေ အကျုံးဝင်သည်။ရှေ့ဆုံးပိုင်းသည်အကျုံးဝင်သည်။ ရှေ့ဆုံးပိုင်းသည် ဆို့ဒ်ကုတ်များ၏ (intermediate representation or IR ) ကိုယ်စားပြုကြားခံ
ကို ထုပ်လုပ်ပေးသည်။
အလယ်ဆုံးပိုင်းသည် အဓိကလုပ်ငန်းဆောင်ရွက်ချက်များကို လုပ်ဆောင်ကြသည်။အထူးသဖြင့်လုပ်ဆောင်ကြသည်။ အထူးသဖြင့် အသုံးပြု၍မရသောကုတ်ဒ်များကို ဖယ်ရှားပေးခြင်း၊ ကိန်းသေတန်ဖိုးများကို ရှာဖွေတိုးပွားစေခြင်း၊ကြိမ်ဖန်များစွာလုပ်ဆောင်ရသောနေရာ(looping ပတ်ခြင်း)တို့အား လျော့ချနိုင်ရန် နေရာသစ်သတ်မှတ်ပေးခြင်းတို့ကိုလုပ်ဆောင်ကြသည်။နောက်ဆုံးအဆင့်အတွက်နေရာသစ်သတ်မှတ်ပေးခြင်းတို့ကိုလုပ်ဆောင်ကြသည်။ နောက်ဆုံးအဆင့်အတွက် ကိုယ်စားပြုကြားခံကိုလည်း ထုပ်လုပ်ပေးသည်။
နောက်ဆုံးအဆင့်သည် အလယ်ပိုင်းအဆင့်မှ ထုတ်ပေးလိုက်သော ကိုယ်စားပြုကြားခံကို assembly ကုတ်ဒ်အဖြစ်ထုတ်လုပ်ပေးသည်။
 
"https://my.wikipedia.org/wiki/Compiler" မှ ရယူရန်