بنام خدا
آدرس جدید مطلب براساس شماره ترتیبی :
https://vahidmy.blog.ir/post/23
آشنایی با کامپایلرهای زبان اسمبلی بخش 1 :
خب بعد از یک وقفه ی طولانی ، قصد دارم طی چند پست شما را با تمامی کامپایلرهای زبان برنامه نویسی اسمبلی آشنا کنم . انشاءا....
من در این وبلاگ به ازای هر کامپایلر زبان اسمبلی ، یک پست منتشر می کنم تا همه ی حقایق در مورد هر کامپایلر زبان اسمبلی آشکار شود و شما با جزئیات آشنا شوید و چیزی از قلم نیفتد .
ترتیب کامپایلرها به ترتیب تاریخ اختراع شان نیست و این بخاطر کمبود وقت است .
بنابراین در هر پست بدون توجه به تاریخ اختراع هر کامپایلر ، ان کامپایلر را معرفی می نمایم .
عملا انتخاب هر کامپایلر بصورت رندوم (تصادفی) انجام می شود .
برای شروع اجازه دهید ابتدا از masm شروع کنم .
masm (مَسم ) مخفف مایکروسافت ماکرو اسمبلر
Microsoft_Macro_Assembler
از همین حالا لازمست بگویم که تقریبا تمامی کامپایلرهای زبان اسمبلی ، ماکرو دارند .
پس لغت masm الزاما به معنای مایکروسافت ماکرو اسمبلر نیست !!! می تواند به معنای مایکروسافت اسمبلر نیز باشد !
اطلاعات کامل و دقیق در مورد 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 ؛ را تیک می زنم که البته در دنیای وبلاگنویسی، این رفتار ؛ کاری مضحک و بی معنا و غیرحرفه ای محسوب می شود ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ، از نظر خودم ، کافی است !!
من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .
من رسومات کهنه ی دنیای وبلاگنویسی و مرزهای علم را جابجا می کنم !!
از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با موضوعات وبلاگ ام ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!
از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم .
این پاراگراف در تمامی پستهای وبلاگ وحیدمی توسط خودم ، عینا الصاق و تکرار می شود .
+
وحید محمدی - وبلاگ وحیدمی
بروزرسانی:
براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها ؛ حذف شدند .
لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری .
تاریخ بروزرسانی
یکشنبه مورخ 29 مرداد 1402 خورشیدی
نکته :
آدرسهای آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید .
در پناه خداوند متعال عظیم الشان باشید
ِ
الهم عجل لولیک الفرج .
امضای همیشگی اینجانب در جهت تایید صحت و درستی مطالب وبلاگهایم :
وحید محمدی . وبلاگ وحیدمی
https://vahidmy.blog.ir/archive
https://vahidmy.blog.ir/post/764