Pages

Monday, October 17, 2011

Getting Started in C++ ( ျမန္မာလို ) - အပိုင္း - ၁


စကားခ်ီး
C နဲ႔ C++ တို႔ဆိုတာ ေလ့လာဖို႔ သင့္ေတာ္တဲ့ ဘာသာစကား ေတြ
မဟုတ္ၾကဘူးဆို ယံုၾကည္ပါတယ္။
ဒါေပမယ့္
လြယ္ကူတဲ့ ဘာသာစကား ကေန စၿပီး ေလ့လာသင့္တယ္။
အဲဒီ ေနာက္မွာမွ ခက္ခဲတဲ့ ဘာသာစကားကို ဆက္လက္ေလ့လာ ရမွာေပါ့။
ဒီလိုပဲ ဒီ စာအုပ္က C++ အတြက္ မဟုတ္ပဲ C အတြက္ ျဖစ္မယ္လို႔ ယံုၾကည္ပါတယ္။
ဒီ သင္ခန္းစာ ေတြက ေတာ့ အရင္က တစ္ခါမွ Program မေရးဖူးတဲ့ သူတို႔ကို ဦးတည္ပါတယ္။
တကယ္လို႔မ်ား စာဖတ္သူက ဒီ သင္ခန္းစာ အတြင္းမွာ အမွားေတြ မရွင္းမလင္း ျဖစ္တာေတြ ေတြ႔ရွိခဲ့ရင္
ေက်းဇူးျပဳၿပီး arron@isotton.com အားျဖင့္ ကၽြန္ေတာ့္ ဆီ ဆက္သြယ္ေပးပါ။ တစ္စံု တစ္ခု နား မလည္ ခဲ့တာ ရွိခဲ့ရင္ ဒါဟာ စာဖတ္သူရဲ႕ မွားယြင္းမႈ မဟုတ္ဘဲ ကၽြန္ေတာ့္ အမွားသာျဖစ္ပါတယ္။
 အခန္း ( )
နိဒါန္း
. ပရိုဂရမ္ တစ္ခု က ဘယ္လို လုပ္ေဆာင္လဲ။
ကြန္ပ်ဴတာ ပရိုဂရမ္ တစ္ခု ဆိုတာ အမိန္႔စာ(command) စုစည္းထားတာေတြကို တစ္ခုၿပီးေနာက္ တစ္ခု Central Processing Unit(CPU) က execute လုပ္ တာကို ေခၚပါတယ္။ အဲဒီ command ေတြက မ်ားေသာ အားျဖင့္ အလြန္ ရိုးရွင္းပါတယ္။ ( ဥပမာ - ေပါင္းျခင္း ေျမွာက္ျခင္း Random Access Memory ( RAM )မွာ ရွိတဲ့ ေဒတာ(data) ေတြကို ဖတ္ျခင္း ေတြျဖစ္ပါတယ္။) ဒါေပမယ့္ ၿပီးျပည့္စံုတဲ့ လုပ္ငန္းေတြ လုပ္ေဆာင္ဖို႔ အတြက္ အဲဒါ ေတြကို ေပါင္းစည္းရပါတယ္။ ပံုမွန္အားျဖင့္ေတာ့ Program တစ္ခုမွာ ေထာင္ခ်ီကေန သန္းခ်ီအတထိ အဲဒီရိုးရွင္းပါတယ္ ဆိုတဲ့ ကြန္မန္း(command) ေတြ ပါဝင္ၾက ပါတယ္။
. Programming ဆိုတာ ဘယ္လို လုပ္ေဆာင္တာမ်ိဳးလဲ။
..  Machine Code and Assembler
မ်ားေသာ အားျဖင့္ Programming ရဲ႕ အေျခခံအဆင့္မွာေတာ့ Machin code ကို တိုက္ရုိက္ ေရးသားျခင္း ျဖစ္ပါတယ္။( CPU အား အမိန္႔ တစ္ခုသာ ေပးျခင္း) ဒါဟာ အလြန္ ခက္ခဲပါတယ္။ ပံုမွန္ အားျဖင့္  Modern CPU မွာ Command ရာခ်ီၿပီး ရွိပါတယ္။ တစ္ခု နဲ႔ တစ္ခု ကလည္း ကြဲျပားတဲ့ အရာ ေတြပါ။ မတူညီတဲ့ Properties ေတြလည္း ရွိေနၾကပါတယ္။ ဒါေပမယ့္ အဓိကကေတာ့ ဒီ လုပ္နည္း ကိုင္ နည္း မွာေတြ႔ရတဲ့ ျပႆနာေတြက အၿမဲတမ္း တူညီမႈမရွိပါဘူး။ ၿပီးေတာ့ CPU model ကြဲျပားတဲ့ အရ မ်ားျပားလွတဲ့ Command ေတြနဲ႔ ေစခိုင္းထားပါတယ္။ မတူညီတဲ့ strengths , weaknesses ေတြ ပါဝင္ ပါ တယ္။ ဒါက hardware components ေတြ အၾကား ဘယ္ကြဲျပား တယ္တယ္ ဆိုတာကို သိရွိေစမွာပါ။ ၿပီး ေတာ့ Operating System(OS) ဘယ္လို အလုပ္လုပ္သလဲ ဆိုတာ ကိုေရာေပါ့။
တစ္နည္း ေျပာရရင္ machine code ဟာ CPU သာ နားလည္ တဲ့ အရာျဖစ္ပါတယ္။ အဲဒါေၾကာင့္ ဘယ္ ပရုိဂရမ္ကို မဆို အသံုးမျပဳ ခင္မွာ machine code အျဖစ္ အရင္ ေျပာင္းလဲပစ္ရ ပါတယ္။ ဒီေနရာ မွာ တစ္ခု တည္းေသာေမးခြန္းကေတာ့ ကၽြန္ေတာ္တို႔ ဒါကို ေရးဖို႔အတြက္ လက္နဲ႔ ေရးသားရမလား၊ ဒါမွ မဟုတ္ program တစ္ခုခု ကို သံုးရမလား ဆိုတာပါပဲ။ machine code ေရးသားျခင္း ဆိုတာက binary1 ကို တုိက္ရုိက္ ေရးသားျခင္းျဖစ္ပါတယ္။ ဒါေပမယ့္ text ေတာ့ မဟုတ္ပါဘူး။ ဒါေပမယ့္ ဒီနည္းဟာ ကီးဘုတ္ေပၚမွာ ေရးသား ရတဲ့ အပိုင္းမွာ အလြန္ၿငီး ေငြ႔ဖြယ္ျဖစ္ ပါတယ္။ အဲဒီေနာက္ပိုင္း လူသားေတြက text ေရးသားၿပီးေနာက္မ် binary အျဖစ္ ေျပာင္းဖို႔ အဓိက ထားလာၾကပါတယ္။ ဒီနည္း က တစ္ခ်ိန္ တုန္းက ထင္ရွားေက်ာ္ၾကား အသံုးမ်ားခဲ့ါပတယ္။ ( အဲဒီ အခ်ိန္တုန္းက ဆိုရင္ Programming အတြက္ တစ္ခုတည္းေသာ နည္းျဖစ္ခဲ့တယ္။) အခုေတာ့လည္း ဒီနည္းကို ေတာ္ေတာ္မ်ားမ်ား ေမ့ေနၾကပါၿပီ။
Programming ထဲမွာ , “binary” ဟာ ဆိုခ်က္ ႏွစ္ခု ရွိပါတယ္။ တစ္ခုကေတာ့ အစဥ္အလာ အတစ္ခုျဖစ္ပါတယ္။ ဆိုလို တာက binary system(0 နဲ႔ 1 ) တို႔ကို အသံုးျပဳျခင္း ကို ဆိုလိုပါတယ္။ ဒုတိယ တစ္ခု ကေတာ့ ပထမ တစ္ခု ကေန ရရွိလာတာ ကို text ဖိုင္ မဟုတ္ပဲ အသံုးျပဳတာပါ။( ဥပမာ - JEPG , MP3 ) ဒါကို binary လို႔ေခၚပါတယ္။
Assembler ဆိုတာ ဘာမွမဟုတ္ပါဘူး။ ဒါေပမယ့္ text ေတြနဲ႔ျပည့္ေနတဲ့ ျပည့္ေနတဲ့ machine code ျဖစ္ပါတယ္။ ဒီအေတာအတြင္းမွာ သင္မွတ္မိေနဖို႔ လိုတာကေတာ့ command တစ္ခု ဆီရဲ႕ number ေတြကို မွတ္မိေနဖို႔ပါ။ ဘယ္ကိုလဲဆိုေတာ့ မတူညီတဲ့ command ေတြ အတြက္ သံုးထားတဲ့ နာမည္ ေတြ ကိုေပါ့။ ဒါေပမယ့္ CPU ေတြကေတာ့ ကြဲျပားတဲ့ commands ေတြ ရွိေနဆဲပါ။ ဒါေၾကာင့္ စာဖတ္သူက machine code ကို တာရုိက္ ေရးသားျခင္းနဲ႔ ပတ္သက္ၿပီး တူညီတဲ့ ဗဟုသုတုေတြ ရွိေနဖို႔ လိုအပ္ပါတယ္။ Assembler ေတာ့ high-speed code ကို ေရးသားရာမွာ (သို႔) Operating system အတြက္ အႏွစ္ခ်ဳပ္ (kernel) အျဖစ္ (သို႔) system ေတြကို embed လုပ္တဲ့ေနရာေတြမွာ က်ယ္က်ယ္ ျပန္႔ျပန္႔ အသံုးျပဳ ေနဆဲ ျဖစ္ပါတယ္။ ( ဒီေနရာမွာ Hardware က တာရိုက္ access လုပ္ပါတယ္။ Assembler က Plain text ျဖစ္ သလို CPU က execute မလုပ္ႏူိင္ပါဘူး။ ဒါေၾကာင့္ အရင္းဆံုး machine code အျဖစ္ ေျပာင္းလဲ ေပးဖို႔ လို အပ္ ပါတယ္။ ဒီေနရာမွာ Assembler လို႔ ေခၚတဲ့ Program ကို အသံုးျပဳျခင္း ဆိုတာ ၿပီးျပည့္စံုသြားပါၿပီ။
စာဖတ္သူကို အုိင္ဒီယာ ေပးဖို႔ အတြက္ ကုဒ္နညး္နည္း ေဖာ္ျပလုိက္ပါတယ္။ အနည္းနဲ႔ အမ်ား ေအာက္ပါ ကုဒ္( code ) ေတြနဲ႔ တူညီပါတယ္။
pushl %ebp
movl %esp,%ebp
subl $20,%esp
pushl %ebx
movl $2,-4(%ebp)
movl -4(%ebp),%eax
leal 1(%eax),%edx


ကိုယ္ခ်င္းစာသူ

0 comments:

Post a Comment

အခုလို ဖတ္ေပးတဲ့အတြက္ ေက်းဇူးပါ။

Web Informer Button
Related Posts Plugin for WordPress, Blogger...