بهترین کامپایلر زبان اسمبلی
به نام خدا
بهترین کامپایلر زبان اسمبلی
من پس از سالها کار با انواع کامپایلرهای زبان اسمبلی و انجام آزمایشات مختلف و کسب تجربه های فراوان و بعد از مقایسه و تفکر فراوان در مورد فلسفه و لایسنس و کپی رایت و ماهیت و ساختار و معماری و قدرت و سرعت و هوشمندی و انعطاف پذیری و جامعه ی کاربری و قابلیت حمل و چند سکویی بودن و کاربردهای مختلف و استقلال کامل این کامپایلرهای زبان اسمبلی ، به این نتیجه رسیدم که از میان دهها کامپایلر زبان اسمبلی ، Fasm یعنی Flat Assembler (اسمبلر یکپارچه) ، از بقیه کامپایلرهای زبان اسمبلی ؛ بهتر و مناسبتر و کاربردی تر است .
دلایل برتری Fasm بر سایر کامپایلرهای زبان Assembly:
(ادامه ی مطلب از درون گوشی هوشمند ، به دلیل امکان قطع برق و خاموش شدن کامپیوتر !)
فلت اسمبلر یا Fasm -فسم -؛ یک کامپایلر کاملا رایگان و یکپارچه و بسیار ساده و بسیار کوچک اما بسیار قدرتمند و بی همتا و کاملا اوپن سورس ( منبع باز) و کاملا آزاد و کاملا خودکامپایل و کاملا پرتابل و قابل حمل و چندسکویی زبان اسمبلی می باشد .
این مزایای اولیه و مهم و ضروری را فقط در فسم -فلت اسمبلر- می توان پیدا کرد .
یعنی مجموع تمام مزایای اولیه ی بالا ؛ فقط در Fasm دیده می شود .
سایر کامپایلرهای زبان اسمبلی که از این لحظه به بعد ؛ آنها را " اسمبلر" نامگذاری می کنم ؛ هرگز تمام این مزایای اولیه و ضروری را یکجا در خود ندارند .
مثلا اسمبلر masm - مخفف Microsoft Assembler -متاسفانه سالهاست که متوقف شده و شرکت مایکروسافت نیز با بدذاتی و خباثت ذاتی اش ؛ masm را متوقف کرده و در بهترین حالت ؛ از masm بعنوان Back end - عقب بندی - کامپایلر زبان سی پلاس پلاس -C Plus Plus - در مجموعه ی Visual Studio استفاده می کند و عملا کاربرهای masm را به تمسخر گرفته و حقوق آنها را پایمال کرده است .
یک آدم دلقک و خودفروخته که مدیر انجمن masm32 می باشد با نشر مطالب زرد و سخیف و به بهانه ی اینکه نمی تواند فایلهای باینری مایکروسافت را بازنشر کند ، به نفع مایکروسافت ؛ باعث مرگ تدریجی masm شده است اما مدام با انتشار تصاویری از کره زمین و فضا و کهکشان و سیاهچاله در جاهای مختلف وبسایت انجمن و در یوتیوب ؛ قصد دارد بگوید که masm یک زبان اسمبلی جهانی و کیهانی و کهکشانی و قدرتمند و بزرگ و بی نظیر و بی همتا است و مابقی اسمبلرها یعنی Fasm و RosAsm و Nasm و ... ؛ همگی اسباب بازی کودکان هستند !!
در حالیکه واقعیت ماجرا ، خلاف این را ثابت می کند .
مثلا همین آقا در پستی در انجمن masm و در پاسخ به سوال یکی از کاربران برای رفع مشکل عدم اجرای فایلهای قدیمی HLP روی ویندوز 10 ؛ بجای اینکه مشکل کاربر را حل کند ؛ مدعی است که برای او حتی در ویندوز 10 نیز این فایلهای قدیمی اجرا می شوند !!
در حالیکه همه می دانیم که مایکروسافت قاتل تمام دستاوردها و فناوری های خوب قدیمی اش می باشد و با دست خودش تمام چیزهای خوب را به قبرستان سپرده و نابود کرده است .
مایکروسافت ؛ قبرستان دستاوردها و فناوریها و محصولات خودش می باشد و استاد خودزنی و خودتخریبی است .
من در همین وبلاگ ؛ روش اجرای فایلهای قدیمی HLP روی ویندوز 10 را آموزش دادم و حتی نرم افزار مربوطه را آپلود کردم .
کافی است آرشیو این وبلاگ را شخم بزنید تا به پست مربوطه وارد شوید !
البته شاید بعدا آدرس را ذکر کنم و زحمت شما را کم کنم!
گذشته از دهها انجمن تو در تو و گیج کننده که برای masm ساخته شده است ؛ خود masm بعنوان یک زبان برنامه نویسی کدبسته و انحصاری و تجاری و مالکیتی و مرده و متوقف شده و نوشته شده با زبانهای سطح بالا و وابسته به همین زبانهای شیطانی ؛ حقیقتا به هیچ دردی نمی خورد و باید آن را از لیست اسمبلرها خط زد و حذف کرد
اسمبلر masm مثل چسب دو قلو ، به ویندوز و اینتل چسبیده و قابل حمل نیست !
ضمن اینکه برای هر فایل dll ویندوز ، دهها فایل اضافی با پسوندهای مختلف می سازد و بی جهت ، سیستم را پیچیده می کند .
در حالیکه تنها کافی است یک فایل با پسوند inс را برای هر فایل کتابخانه ی ویندوز ، بسازیم .
مثال :
برای فایل user32.dll ، کافی است فایلی به نام user32.inc بسازیم .
همین کافی است .
سایر پسوندهای این فایل مثل user32.lib و user32.def ، ... ، واقعا اضافی و زائد هستند و هیچ کاربردی در زبان اسمبلی ندارند .
اسمبلر masm بطور کامل با زبان برنامه نویسی C ساخته شده و به این زبان ، وابسته است و گرامرش نیز بسیار شبیه به زبان C می باشد و این فایلهای اضافی را نیز به همین دلیل تولید می کند و سیستم را بی جهت پیچیده و سنگین و بزرگ می کند .
این درحالیست که MASM با وجود استفاده از گرامر شبه زبان C ، اصلا قابل حمل نیست و مثلا روی لینوکس یا مک یا سایر سیستم عامل ها و نیز روی پردازنده های غیر اینتل ، اصلا و ابدا نصب یا اجرا نمی شود
همین masm باعث شد که این تفکر غلط در ذهن برنامه نویسان و مهندسان کامپیوتر شکل بگیرد که اسمبلی یک زبان وابسته به سخت افزار است و قابل حمل نیست
بدبختانه بیش از 91 درصد نرم افزارها و مباحث آموزشی و جزوات آموزش زبان اسمبلی ، بر اساس masm و همین تفکر غلط تولید شده اند .
لذا masm باعث بدنامی زبان اسمبلی شده است
ایده و راه حل :
باید تمام نرم افزارها و مستندات آموزشی اسمبلر Masm را از اول تا آخر برای اسمبلر Fasm بازنویسی کرد تا این تفکر غلط که علیه زبان اسمبلی شکل گرفته ؛ کم کم نابود شود .
زیرا خوشبختانه اسمبلر Fasm تنها کامپایلر قابل حمل و چندسکویی زبان اسمبلی می باشد و درعمل ؛ زبان اسمبلی را به رقیب سرسخت زبانهای سی پلاس پلاس و جاوا و پایتون و حتی سی شارپ ؛ تبدیل کرده است .
من بطور خلاصه ؛ مزایای کلی زبان اسمبلی Fasm را بصورت تیتروار اینجا می نویسم تا برای همیشه ؛ خودم و شما و تمام مردم را از این تردید و سردرگمی نجات بدهم و بر افکار غلط که علیه زبان اسمبلی ؛ شکل گرفته ؛ خط بطلان بکشم .
من از لغت فسم بجای فلت اسمبلر یا Fasm اسنفاده می کنم تا سریعتر بتوانم این پست را تمام کنم .
نکته مهم :
من از پست بعدی ؛ فقط از لغت -فسم- بجای لغاتی همچون Fasm یا فلت اسمبلر یا حتی بجای لغت اسمبلی ، استفاده خواهم کرد !!
یعنی بجای زبان اسمبلی ؛ می گویم زبان فسم !!
چون حروف کمتری بکار می رود و وقت مرا هدر نمی دهد و تایپ کردنش راحت تر است !!
از پست بعدی ؛ فسم ؛ همان زبان اسمبلی خواهد بود .
و من فقط ؛ واژه " فسم" را بجای واژه های طولانی قبلی بکار خواهم برد .
این موضوع را بخاطر بسپارید .
+
از همینجا شروع می کنم تا به واژه ی فسم ؛ عادت کنید و معنایش را بخاطر بسپارید !!
یکبار برای همیشه :
فسم یعنی فلت اسمبلر یعنی اسمبلر ساده و تخت و یکپارچه و یک تیکه یعنی Fasm
فسم = Fasm
+
+
مزایای فسم نسبت به سایر کامپایلرهای زبان اسمبلی:
تمام مزایای اولیه و ضروری که در بالا نوشتم
به علاوه مزایای زیر:
فسم هیچ نیازی به نصب یا پیکربندی ندارد و کاملا قابل حمل است و به محض کلیک روی آن ؛ اجرا می شود
فسم در تمام مکانهای ویندوز به راحتی اجرا می شود . چه در ریشه ی درایو دیسک سخت یا نرم و چه در فولدرها
فسم را براحتی می توان در هرجایی از ویندوز جابجا کرد و سپس اجرا نمود .
فسم از لحاظ نرم افزاری و سخت افزاری ؛ کاملا قابل حمل و پرتابل است .
یعنی فسم به هیچ نوع سیستم عامل یا هیچ نوع پردازنده ؛ وابسته نیست
فسم دارای دهها نسخه برای انواع سیستم عامل و اتواع پردازنده و میکروکنترولر می باشد
بنابراین ، فسم قابل حمل ترین زبان برنامه نویسی جهان می باشد ( البته بعد از زبان ماشین ) .
فسم برای هر سیستم عامل ؛ نسخه ی مخصوص به خودش را دارد .
خوشبختانه این نسخه ها با یکدیگر سازگار هستند و برنامه های همدیگه را اجرا می کنند .
فسم برای تولید هر نوع فایل با هر نوع پسوند و معماری و حتی فایلهای بدون پسوند و بدون معماری ؛ بهترین گزینه می باشد ( البته بعد از زبان ماشین ) .
زیرا فسم ؛ نسخه ی قابل فهم و اتوماتیک زبان ماشین ؛ محسوب می شود
یعنی فسم ؛ تمام مزایای hex editor ها را دارد و رقیب سرسختی برای زبان ماشین محسوب می شود
منظور از زبان ماشین و برنامه سازی سیستم ؛ فسم می باشد .
زیرا برخی مهندسان ایرانی از جمله مهندس وحید نصیری ؛ با Fasm آشنا هستند و او را می شناسند .
من با مطالعه جزوات قدیمی مهندس وحید نصیری ؛ با Fasm آشنا شدم !!
حدود یازده سال پیش !
فسم به صدها روش مختلف ؛ نرم افزار و فایل می سازد :
از سطح پایین ترین روش یعنی کدهای زبان ماشین تا سطح بالاترین روش یعنی کدهای زبان برنامه نویسی شبه سطح بالا
فسم چه با ماکرو و کتابخانه و چه بدون ماکرو و کتابخانه ؛ فایل می سازد
دقت کنید:
فسم فقط نرم افزار نمی سازد بلکه همه نوع فایل با همه نوع پسوند و معماری و کاربرد و حتی فایلهای بدون پسوند و توخالی و بدون معماری هم می سازد !!
یعنی دقیقا شبیه به hex editor
فسم به کوچکی و بزرگی حروف دستورات زبان اسمبلی ؛ حساس نیست و شما را اذیت نمی کند
دقیقا مثل زبان ماشین
برخلاف تصور رایج ؛ فسم می تواند فایلها و نرم افزارها را مهندسی معکوس نماید !!
کافی است تمام کدهای hex زبان ماشین درون معماری آن فایل یا نرم افزار را به درون محیط Fasm کپی کنید
البته فسم هنوز به آن مرحله نرسیده که بتواند فایل های بزرگ را باز کرده و مهندسی معکوس کند و شما کماکان به یک hex editor قدرتمند مثل WinHex نیاز دارید .
اگر این مورد آخر را نادیده بگیرید ؛ آنگاه فسم بعنوان زبان اسمبلی ؛ می تواند تمام زبانها بجز زبان ماشین را شکست دهد !!
زیرا فسم برای تمام مدلهای برنامه نویسی از جمله برنامه نویسی سمت کامپیوترهای سرور و شبکه های کامپیوتری و یا وب سرور لینوکس یا ویندوز ، کاربرد عملی و واقعی دارد و اینطوری عملا به زبان برنامه نویسی راست -Rust- نیاز نداریم !
تنها زبانی که می تواند زبان اسمبلی را شکست دهد ؛ زبان ماشین است .
زبان ماشین یعنی hex editor یا disk editor
زبان ماشین یعنی چیزی شبیه به WinHex که هم hex editor است و هم disk editor
من قبلا در همین وبلاگ ؛ برخی از کاربردهای WinHex را اموزش داده ام . مثل ریکاوری فایلها و پارتیشن های مفقود شده
البته hex editor دیگری به نام HxD نیز وجود دارد که نسخه ی ویندوز و لینوکس دارد و رایگان است و از بسیاری جهات شبیه به WinHex است .
اما این پست ؛ بطور تخصصی به مقایسه کامپایلرهای زبان اسمبلی تعلق دارد .
من این پست را با چند سوال و جواب پایان می دهم :
سوال : آیا RosAsm برای مهندسی معکوس ؛ بهتر از Fasm نیست ؟؟؟
جواب : مسلما RosAsm و تمام hex editor ها برای مهندسی معکوس ؛ بسیار مناسبتر و قویتر از Fasm هستند اما هدف این وبلاگ ؛ کرک یا مهندسی معکوس نیست بلکه هدف آن است که اسمبلی را بعنوان زبان برنامه نویسی به مردم معرفی کنیم تا افکار غلط که علیه زبان اسمبلی وجود دارد کم کم از بین بروند
ضمن اینکه قابلیت حمل نرم افزاری و سخت افزاری ؛ بسیار مهم تر از مهندسی معکوس است .
متاسفانه RosAsm و بسیاری از hex editor ها قابل حمل نیستند .
سوال : آیا Fasm می تواند تمام کارهای تمام زبانهای برنامه نویسی را انجام دهد ؟؟
جواب : بله ! می تواند . اما باید به انجمن Fasm مراجعه شود و نمونه کارهای دیگران را دانلود و بررسی کرد .
سوال: اگر امکان ترجمه کد منبع سایر زبانها به کد منبع فسم ، فراهم نشود ، آیا بازهم Fasm قابل استفاده است ؟؟
جواب :
ابزارهایی وجود دارد که با کمک آنها می توانیم کد منبع و نیز محتوای فایلهای هدر و کتابخانه ی تمام زبانهای سطح بالا و سطح پایین را به نمونه ی مورد نیاز در فسم تبدیل کرد .
اما با وجود این ابزارها ، فسم یک زبان اسمبلی است نه hex editor که باینری تمام زبانها را ویرایش و اجرا کند !
بنابراین فرایند ترجمه باید بصورت دستی یا با کمک یک نرم افزار انجام شود .
آنگاه Fasm می تواند کد منبع سایر زبانها را اجرا کند .
سوال : آیا بهتر نیست از hex editor برای انجام همه نوع کار استفاده کرد و از شر فرایند ترجمه و سپس خطاهای کامپایلر خلاص شد ؟؟
جواب :
اگر hex editor دارای محیط ویراستاری و ابزارهای شبه اسمبلی باشد و امکان برنامه نویسی حرفه ای با زبان اسمبلی در آن فراهم باشد و جامعه کاربری فعال و وبسایت و انجمن فعال و قوی داشته باشد مسلما بهترین جایگزین بجای این کامپایلرهای اسمبلی مخسوب خواهد شد .
اما فعلا که چنین hex editor سازگار با زبان اسمبلی وجود ندارد یا اگر هم وجود داشته باشد ؛ مرده است و وبسایت و انجمن و جامعه کاربری ندارد .
سوال : اگر یک hex editor با شرایط بالا کشف شود و تمام این تردیدها را برطرف کند آیا می تواند جای زبان اسمبلی را بگیرد ؟؟؟
جواب : بله ! اگر چنین hex editor جالبی پیدا شود خیلی راحت می تواند زبان اسمبلی را شکست دهد و جای او را بگیرد و من نیز چنین hex editor جالبی را تبلیغ خواهم کرد .
سوال : موضوع پست بعدی چیست ؟؟
جواب : من مدرس نیستم و کارم فقط مقایسه و آزمایش و تبلیغ است .
بنابراین پست بعدی هرگز تدریس زبان نیست
بلکه یک کشف احتمالی دیگر است و یا یک چیز دیگر !!
من زبانهای ماشین و اسمبلی را فقط تبلیغ می کنم .
زیرا وقت و حوصله ی تدریس را ندارم .
من فقط یک مبلغ هستم و تبلیغ می کنم .
پست بعدی نیز شاید تبلیغ از Fasm باشد .
البته تبلبغ از جنبه های مخفی Fasm که تکراری نباشند .
قصد ندارم مطالب قبلی را تکرار کنم .
بهرحال ؛ Fasm با توجه به معیارهای درون این پست ؛ بهترین کامپایلر زبان اسمبلی می باشد .
بنابراین من Fasm را بعنوان بهترین کامپایلر زبان اسمبلی ؛ پیشنهاد می دهم !
فسم مزایای دیگری نیز دارد که اگر وقت کافی داشته باشم این مزایای جدید را در پست های بعدی خواهم نوشت .
انشاا...
این پست را همینجا به پایان می رسانم .
زیرا تمام محتوای این پست را از درون گوشی هوشمند و تنها با یک انگشت نوشتم و چشم هایم به شدت درد گرفتند و دیگه نمی توانم ادامه دهم !!
آن یکی دستم نیز بخاطر نگه داشتن گوشی در هوا ؛؛ بی حس شد !!!
فعلا خدانگهدار تا پست بعدی !