بنام خدا


آشنایی با کامپایلرهای زبان اسمبلی بخش 1



خب بعد از یک وقفه ی طولانی ، قصد دارم طی چند پست  شما را  با تمامی کامپایلرهای زبان برنامه نویسی اسمبلی آشنا کنم . انشاءا....


من در این وبلاگ به ازای  هر کامپایلر زبان اسمبلی ،  یک  پست منتشر می کنم تا  همه ی حقایق در مورد هر کامپایلر زبان اسمبلی  آشکار شود و شما با جزئیات آشنا شوید و چیزی از قلم نیفتد .


ترتیب کامپایلرها  به ترتیب  تاریخ اختراع شان نیست و این بخاطر کمبود وقت است  .


بنابراین  در هر پست  بدون توجه به تاریخ اختراع هر کامپایلر ،  ان کامپایلر را  معرفی می نمایم  .


عملا  انتخاب هر کامپایلر بصورت رندوم  (تصادفی)  انجام می شود .


برای شروع  اجازه دهید ابتدا از  masm  شروع کنم .



masm  (مَسم )  مخفف  مایکروسافت ماکرو اسمبلر 

Microsoft_Macro_Assembler



از همین حالا لازمست بگویم که تقریبا  تمامی کامپایلرهای زبان اسمبلی ،  ماکرو دارند .


  پس لغت masm  الزاما   به معنای  مایکروسافت ماکرو اسمبلر  نیست !!! می تواند به معنای  مایکروسافت اسمبلر نیز باشد !




مایکروسافت ماکرو اسمبلر یا  مَسم  (masm) در دهه ی 80 میلادی (حدودا  سال  1981 میلادی )   توسط شرکت معروف مایکروسافت  و با استفاده از  زبان  برنامه نویسی  سی    (c)  اختراع شد و بصورت کدبسته فروخته می شد .


اطلاعات کامل و دقیق در مورد  masm   را می توانید از لینک زیر  پیدا کنید:


https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler



مَسم (مایکروسافت اسمبلر)  در دو نسخه  تولید شده  است :


1- نسخه ی 16 بیتی و  32 بیتی  که بصورت  Masm32  از سایتی جداگانه  قابل دانلود است .


2- نسخه ی 64 بیتی که بخشی از بدنه ی  ویژوال استودیو می باشد .



نسخه ی 16 و  32 بیتی  مایکروسافت اسمبلر را می توانید از آدرس زیر  دانلود کنید . این نسخه  رایگان است اما  اوپن سورس و آزاد نیست (متاسفانه ) :



 http://www.masm32.com/download.htm



این نسخه ، مستقل از مایکروسافت است و عملا مایکروسافت انرا بکلی فراموش کرده است .


masm32  عملا   نسخه ای کاملا  مستقل می باشد و  هیچ ربطی به شرکت  مایکروسافت ندارد و بصورت یک پروژه ی جداگانه  عرضه می شود.


masm32   بصورت یک پکیج مستقل ،  از آدرس بالا  قابل دانلود است .


masm32  بعد از دانلود شدن باید روی ریشه ی درایو  C  یا  D  نصب شود . حتما باید روی ریشه ی درایو نصب شود .

مراحل  نصب قدری  زمانبر است . باید کمی حوصله داشته باشید .



مزایای   مایکروسافت ماکرو اسمبلر (masm)


1- معروفترین و متداولترین  کامپایلر زبان اسمبلی در دنیاست و در ایران نیز توسط مهندسین کامپیوتر و برنامه نویسان حرفه ای  بکار می رود . لذا منابع آموزشی و برنامه های بسیار زیادی دارد که باعث می شود شما  خیلی زود بر زبان اسمبلی تحت ویندوز ، مسلط شوید .


2- تقریبا در اکثر سایتها و  انجمنها  و  وبلاگهای ایرانی و خارجی  ، وقتیکه از زبان اسمبلی حرفی به میان می آید همه  همین  masm32  (مایکروسافت ماکرو اسمبلر)  را  به یکدیگر معرفی کرده و بکار می برند و با ان برنامه نوشته و روش برنامه نویسی با ان را به کاربران یاد می دهند .

بنابراین عملا  masm32  پرکاربردترین  و متداولترین کامپایلر زبان اسمبلی در ایران و جهان است . این یک مزیت بزرگ برای این اسمبلر است زیرا جامعه ی کاربری بسیار بزرگی دارد  که می تواند به رفع مشکلات شما  کمک کنند .


3- گرامر (سینتاکس)   مایکروسافت ماکرو اسمبلر شباهت فراوانی به گرامر زبان   برنامه نویسی   سی   دارد .  البته صد درصد شبیه نیست زیرا هرچه باشد  اسمبلی است . ولی تا حدودی  کار کردن با آن برای برنامه نویسان زبان  C  آسان است ( بدلیل شباهت در سینتاکس)


بنابراین از این جهت نیز  این  اسمبلر  طرفداران فراوانی خصوصا در میان برنامه نویسان زبانهای   سی و سی پلاس پلاس دارد .


4- مایکروسافت ماکرو اسمبلر  ده ها   محیط جامع برنامه نویسی یعنی  IDE  دارد که کارکردن با ان را بسیار آسان و سریع   می کند .


5-  امکان برنامه نویسی شیئ گرا نیز در masm32  وجود دارد .  خصوصا اینکه برخی از IDE های این اسمبلر کاملا   ویژوال و شیئ گرا هستند . 


6- دارای دو نوع سینتاکس  اسمبلی می باشد : اسمبلی خالص استاندارد سطح پایین (شبیه به  دیس اسمبلی)   و   اسمبلی سطح بالا  شبیه به زبان  سی 


7-  برنامه نویسی در masm32  تقریبا آسان  و راحت است .   مراحل کامپایل و بیلد و ران  شبیه به مراحل مشابه در زبان  سی  می باشد .


8- کتابخانه ها  و مستندات برنامه نویسی بسیار زیادی برای  masm32 وجود دارد و حتی بسیاری از کتابخانه های زبانهای  سی و سی پلاس پلاس از اول تا آخر  برای  masm32 بازنویسی شده اند .

بنابراین برنامه نویسان زبانهای سی و سی پلاس پلاس براحتی می توانند از این کتابخانه ها برای برنامه نویسی حرفه ای با زبان اسمبلی استفاده نمایند  و نرم افزارهای قدرتمند و حرفه ای  تحت ویندوز تولید کنند .  


9-  masm32  همانطور که در بالا گفته شد در دو مدل  16 و  32 بیتی  برنامه تولید می کند .


10- تمامی توابع API ویندوز بعلاوه ی بسیاری از توابع  زبانهای سی و سی پلاس پلاس  برای  masm32  بازنویسی شده اند .  لذا  مایکروسافت ماکرو اسمبلر عملا  از امتیازات  این دو زبان قدرتمند  نیز برخوردار است و می توان با کمک ان نرم افزارهای بسیار قوی و بزرگ و کارامد و حرفه ای برای ویندوز تولید کرد .

(من اگر بجای برنامه نویسان این دو زبان بودم  حتما  از  masm32  نیز برای تولید نرم افزارهای بزرگ و قدرتمند و با کیفیت و کارآمد استفاده می کردم )    


11-  بخشهایی از سورس  ویندوز 2000  پروفشنال  بطور کامل با   masm32  و توسط شرکت مایکروسافت نوشته شده است . 


12-  مَسم  (masm32)   یک اسمبلر قدرتمند و پایدار و سختگیر می باشد . این اسمبلر همچون  سایر محصولات شرکت مایکروسافت  با بهترین کیفیت  ساخته شده و عملا یک نرم افزار بسیار مستحکم و قوی است .


من به  برنامه نویسان حرفه ای توصیه می کنم  که  یکبار هم که شده برای برنامه نویسی تحت ویندوز از  masm32  استفاده کنند .



معایب مایکروسافت ماکرو اسمبلر:


1- منحصرا  برای ویندوز ساخته شده و فقط روی ویندوز نصب می شود و قابل حمل نیست  یعنی به ویندوز شدیدا وابسته است . پس نمی توان از آن برای سایر سیستم عاملها استفاده کرد .


2- متاسفانه  برای ساخت سیستم عامل چندان  مناسب نیست . زیرا بین نسخه های 16 بیتی و 32 و 64 بیتی اش  هماهنگی وجود ندارد . فقط  بخشهای حساس ویندوز با  این اسمبلر ساخته شده اند .


3- فقط برای پردازنده ی اینتل ساخته شده و  مثلا برای  پردازنده ی Arm  هیچ نسخه ای ندارد .

4- قدری کند است زیرا با زبان  سی  ساخته شده و عملا این موضوع برای یک اسمبلر اصلا  وجهه ی خوبی ندارد .  اسمبلر باید بسیار سریع و چابک باشد .


5- بخش ابتدایی برنامه های  Masm32  پر از  رهنمودهای کامپایلر و  کتابخانه ها  و  پروتوتایپ است که واقعا  برای یک برنامه نویس مبتدی ،  خسته کننده و وقتگیر است .


6- هیچ پشتیبانی از این اسمبلر  صورت نمی گیرد  . مایکروسافت  بطور کامل انرا فراموش کرده و   توسعه ی  ان سالهاست که متوقف شده است .  می توان  این اسمبلر را جزو اسمبلرهای  نیمه زنده و درشرف انقراض  محسوب کرد .  هرچند هنوز هواداران بسیاری در دنیا و حتی ایران دارد .


درصورتی که  به این پست علاقه مند شده اید و دوست دارید با   masm32 برنامه نویسی کنید در بخش کامنتها  از من سوال کنید تا جواب بدهم .


مراحل نصب  masm32   را در بخش کامنتها  توضیح می دهم .


اگر  به برنامه نویسی با  اسمبلی علاقه دارید  سوالات خود را در در قالب کامنت  مطرح کنید  تا جواب دهم ..


 فعلا شب بخیر . 

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


این پاراگراف در تمامی پستهای وبلاگ وحیدمی  توسط خودم ، عینا الصاق و تکرار می شود .


+


وحید محمدی -  وبلاگ  وحیدمی  


https://vahidmy.blog.ir