بنام خدا


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


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


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


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


پس با اجازه ی اساتید فن ، شروع می کنم :



فلت اسمبلر  (فَسم):


فلت اسمبلر یا  Fasm (فَسم)  در سال 1999 میلادی توسط  یک ریاضیدان لهستانی به نام  Tomasz Grysztar   اختراع شد  و البته هنوز هم توسط ایشان درحال توسعه است . هر یک ماه ، یک نسخه ی جدید از فلت اسمبلر در سایت رسمی ، آپلود می شود .  بنابراین   فلت اسمبلر ،  بروزترین کامپایلر اسمبلی در دنیا محسوب می شود .  



سایت رسمی فلت اسمبلر :


https://flatassembler.net/



انجمن رسمی کاربران فلت اسمبلر ( انجمن فلت اسمبلر) :


https://board.flatassembler.net/


برای پرسیدن سوالات  در مورد  این زبان ،  لازمست که عضو انجمن  باشید .


اما برای دانلود نرم افزارها و سیستم عاملهایی که توسط فسم ساخته شده اند نیازی به عضویت نیست و می توانید بعنوان کاربر میهمان تمامی فایلهای این انجمن  و همچنین سایت رسمی را دانلود کنید .

این انجمن در حال حاضر (سال  2021  میلادی )   حدود   6393  نفر عضو فعال و برنامه نویس حرفه ای و مجرب  دارد که تا کنون بیش از 205000  مقاله  در این انجمن  ، پست کرده اند و شما می توانید سوالات خود را از آنها بپرسید .


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



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


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








 fasm   مخفف  flat assembler می باشد . یعنی اسمبلر یکپارچه .  چون در fasm نیز همانند  RosAsm  ما با یک سیستم یکپارچه طرف هستیم . یعنی اکثر اجزای زبان برنامه نویسی  در  فسم  نیز  در قالب یک فایل اجرایی قرار  می گیرند .



 فلت اسمبلر  دارای نسخه های مختلف و متعدد می باشد که من بصورت خلاصه اسامی این  نسخه ها را می آورم:


fasm    (Original  Version  for   All  of   OSs)


fasmg   (portable  version  for   All  of   OSs)


FASMARM   (ARM  version)


Fresh    (Visual  version)



من در مورد این ورژنهای مختلف در  وبلاگهای مختلف توضیح داده ام .


وبلاگهایی که من  برای معرفی  فلت اسمبلر ساخته ام عبارتند از :


http://assembler.blog.ir


http://fasmg.blog.ir


http://fasm.Farsiblog.com


http://fasmg.tebyan.net


http://fasmy.tebyan.net




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


اگر وبلاگ جدیدی در مورد  فلت اسمبلر بسازم  به شما  خبر می دهم .


 هدف من از  ساختن اینهمه وبلاگ برای فلت اسمبلر اینست که این اسمبلر استثنایی و همه منظوره را به تمام کاربران  سیستمهای وبلاگدهی مختلف ایران  معرفی کنم و عملا خیلی سریعتر این زبان را در ایران ترویج نمایم .


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



خب حالا خیلی سریع می روم  سراغ مزایا و معایب فلت اسمبلر:



مزایای  فلت اسمبلر:


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

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


فسم  قدرتمندترین زبان برنامه نویسی قابل فهم و اتوماتیک دنیاست و هیچ رقیبی بجز زبان ماشین ندارد .


فسم از تمامی کامپایلرهای زبان اسمبلی ، قدرتمندتر و بروزتر و کاملتر است و عملا می تواند  تمامی زبانهای سطح بالا و سطح پایین (بجز زبان ماشین )  را  از رده خارج کرده و منسوخ کند  و خودش به پادشاه زبانهای برنامه نویسی دنیا تبدیل شود .  



2- فسم یک کامپایلر  رایگان ، اوپن سورس و آزاد برای زبان اسمبلی است و از لایسنس  معروف  BSD  استفاده می کند لذا  می توانیم تحت این لایسنس  ، سورس و باینری فسم را اصلاح کرده و بازنشر نماییم .  بنابراین فسم جزو نرم افزارهای آزاد محسوب می شود .



3-  فسم در  چهار مدل :  8 بیتی (برای میکروکنترولرهای قدیمی ) ، 16 بیتی ، 32 بیتی و  64 بیتی ( برای تمامی انواع پردازنده ها و میکروکنترولرها)   می تواند نرم افزار کاربردی و سیستمی و درایور و حتی سیستم عامل بسازد .


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




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


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


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




4- فسم ، قابل حمل ترین کامپایلر زبان اسمبلی در دنیاست  زیرا :


اولا : به هیچ سیستم  عاملی وابسته نیست و حتی خودش چندین سیستم عامل را ساخته است و عملا برای تمامی سیستم عاملهای دنیا می توانیم از فسم استفاده کنیم .


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



ثالثا  فسم به هیچ پردازنده یا میکروکنترولر وابسته  نیست زیرا هم  ماکروهای قدرتمند برای  قابلیت حمل سخت افزاری دارد و هم نسخه ی قابل حمل یعنی  fasmg  دارد که نسل جدید fasm  محسوب می شود و قابلیت حمل سخت افزاری بالایی دارد .


رابعا: فسم در محیط ویندوز آزادانه در همه ی مسیرها اجرا می شود و  هرگز به نصب یا حتی پیکربندی نیاز ندارد. 


فسم حتی می تواند از کتابخانه هایش جدا شده و بصورت یک فایل تنها  یعنی  FasmW.exe   برای برنامه نویسی در هر سیستم  ویندوزی یا حتی لینوکسی  اجرا شود .

این ویژگی ، بسیار خوب است و ما را از یدک کشیدن    فایلهای با پسوند  inc  بی نیاز می کند .


البته در این  حالت یا باید به روش خام نویسی (شبیه به زبان ماشین ) استفاده کنید یا  اسامی توابع و ثابتهای سیستم عامل را در سورس برنامه بیاوریم   مگر اینکه بخواهیم نرم افزارهای خالص باینری با پسوند  bin  یا نرم افزارهای بدون پسوند برای سیستم عاملهای مختلف  بسازیم . که در این حالت همین فایل به تنهایی تمامی نیازهای ما را براورده می کند .


درمجموع  ، فسم  قابل حمل ترین زبان برنامه نویسی دنیا (بعد از زبان ماشین ) می باشد .



جابجا  کردن فسم  بسیار اسان و راحت است و به محض اینکه روی فایل  fasmW.exe  کلیک کنید سریع اجرا می شود و هیچ نیازی به پیکربندی ندارد .


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



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


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


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


7-  فسم  به محض اجرا،  امکان برنامه نویسی را به شما می دهد یعنی می توانید همان موقع در محیط ویراستاری ، کدهای اسمبلی را نوشته و سپس با فشردن کلید   F9   ، برنامه تان را کامپایل و بیلد و ران (اجرا ) کنید .


8- فسم به هیچ نوع پیکربندی نیازمند نیست زیرا از ساختار بسیار بسیار ساده و کوچکی برخوردار است و عملا وقت تان  هرگز برای موارد  زائد  مثل نصب یا پیکربندی  هدر   نمی رود. 


9- اگر در فسم ؛  بدون کدنویسی ، (یعنی بدون نوشتن حتی یک خط کد )   کلید F9 را فشار دهید فسم ،  یک فایل کاملا خالی  با پسوند bin  ایجاد می کند  که در نوع خودش جالب است .



10- در فسم با  کمک رهنمود  format می توان همه نوع فایل با همه نوع پسوند و حتی فایلهای بدون پسوند را تولید کرد ( دقیقا شبیه به زبان ماشین )  . از این نظر  فسم خیلی سعی کرده که به زبان  ماشین نزدیک شود و البته موفق نیز بوده است .


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


مثلا  رهنمود زیر  فایلهای  با پسوند dex  (فایلهای اجرایی سیستم عامل DexOS )  را ایجاد می کند:


 format  as  dex


برای تولید نرم افزارهای ویندوزی باید به این صورت بنویسیم :


format  PE GUI  4.0



برای تولید نرم افزارهای هر سیستم عامل باید از  رهنمود format  استفاده کرد . 


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


برای تولید فایلهای غیرنرم افزاری ( فایلهای عادی)  نیز می توان از فسم استفاده کرد . مثال:


format   as   jpeg


یا


format   as   mp3


یا 


format   as   pdf



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


از این نظر و بنا به سایر دلایل ، فسم را می توان نسخه ی قابل فهم زبان ماشین دانست و آنرا  نزدیکترین کامپایلر زبان اسمبلی  به زبان ماشین دانست ( حتی نزدیکتر از RosAsm ) .




11- اگر تمامی محتویات یک نرم افزار را که بصورت کدهای هگزادسیمال زبان ماشین می باشند به درون برنامه مان کپی کنیم و کلید  F9 را فشار دهیم  فسم  این نرم افزار آماده را کامپایل می کند ولی پسوند bin به ان می دهد که باید با دست آنرا به exe تغییر داد !


این ثابت می کند  که در فسم می توان تمامی اجزای یک نرم افزار را از اولین تا آخرین بایت با کدهای هگزادسیمال زبان ماشین نوشته و این کدهای زبان ماشین را کامپایل کرد . این خیلی جالب و شگفت انگیز است  زیرا  زبان ماشین  کامپایلر ندارد و نرم افزار در زبان ماشین تنها با دست نوشته شده و سپس از طریق  save  (ذخیره کردن روی هارد)  تولید می شود .


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


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


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



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


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


عملا این امکان در فسم وجود دارد که مقادیر بالایی از حافظه ی رم را برای عملیات کامپایل در نظر بگیریم که این باعث افزایش سرعت و قدرت فسم می شود



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


لازم به ذکر است که  سورس فسم  با زبان اسمبلی کاملا سطح پایین و خالص و تمیز  نوشته شده  و توسط خودش کامپایل می شود . لذا فسم   همانند  روسسم (RosAsm ) ، یک  اسمبلر  خودمیزبان و خودکامپایل  می باشد و به هیچ زبان سطح بالا ، نیاز ندارد .  





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


نکته: فسم در حالت پیشفرض ، یک اسمبلر خالص و استاندارد و کاملا سطح پایین است (دقیقا شبیه به  rosasm  )  و عملا  برای برنامه نویسی سطح بالا  در فسم باید حتما از ماکرو استفاده کنیم .


همانند  RosAsm  ،  در Fasm  نیز  بدون استفاده از ماکرو نمی توان از کلماتی همچون  if  یا  else یا    proc یا .....  استفاده کرد . 


چون  فسم  نیز  یک اسمبلر کاملا سطح پایین و کاملا خالص و استاندارد و اصیل  است .



 


15- فسم توانایی خارق العاده ای در تولید سیستم عاملها و نرم افزارهای بسیار بسیار ریز و کوچک و بسیار سریع دارد  .


مثلا می توانیم با  فسم  یک سیستم عامل با حجم کمتر از 1 مگابایت بسازیم که گرافیکی هم باشد یعنی دسکتاپ داشته باشد (یعنی محیطی شبیه به ویندوز داشته باشد  و نرم افزار و ماشین مجازی و ابزارهای برنامه نویسی و بازی کامپیوتری نیز داشته باشد)   


سیستم عاملهای زیر همگی کمتر از 1 مگابایت حجم دارند و بطور کامل با فسم و بصورت اسمبلی سطح پایین یا ترکیبی از اسمبلی سطح پایین و اسمبلی سطح بالا  ، ساخته شده اند و همگی دارای رابط گرافیکی کاربر هستند و همچون ویندوز یا لینوکس ، دسکتاپ دارند و می توان  از انها استفاده کرد :


DexOS



TetrOS




kolibriOS




menuetOS




من خودم شخصا سیستم عامل  kolibriOS  که توسط  یک تیم از برنامه نویسان کشور  روسیه   ساخته شده و درحال توسعه است  را  روی ویندوز نصب کرده ام و تحت این سیستم عامل ، با زبان اسمبلی (فسم) برنامه نوشته ام .  سیستم عامل  کالیبری او اس   (kolibriOS)

بسیار سریع روی ویندوز نصب می شود و البته پس از ریبوت کردن کامپیوتر در منوی بوت سیستم  نام این سیستم عامل در کنار نام ویندوز و لینوکس نمایش داده می شود و عملا بواسطه ی اینکه بوت لودر این سیستم عامل در سکتور 0  هارد دیسک قرار می گیرد  با سرعت بسیار زیاد کنترل کامپیوتر را در دست گرفته به سیستم عامل پیشفرض تبدیل می شود و عملا مهار کامپیوتر را از ویندوز  و لینوکس می گیرد و خودش  در کمترین زمان یعنی 2 ثانیه  بوت می شود  و در مدت 1 ثانیه نیز کامپیوتر را خاموش می نماید .


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


البته حذف کردنش بسیار ساده است . براحتی می توان آنرا با دست از روی هارد حذف کرد .


نرم افزارهای سیستم عامل کالیبری او اس   (kolibriOS)  هیچ پسوندی ندارند وبسیار ساده و کوچک  و فشرده هستند و معماری بسیار بسیار ساده و کوچکی دارند و  با سرعت برق اجرا می شوند یعنی به محض کلیک روی انها در مدت  یک دهم ثانیه اجرا می شوند .

 

هیچگونه فرایند نصب صورت نمی گیرد . تمام این سیستم عامل در یک فایل 1 مگابایتی  با پسوند img  قرار گرفته و کاملا فشرده است .

این سیستم عامل بر روی ویندوز بصورت مخفیانه و در کمتر از 1 ثانیه نصب می شود اما برای ورود به ان باید سیستم را ریبوت کرد که در این حالت ظرف 2 ثانیه وارد محیط گرافیکی این سیستم عامل می شویم و می توانیم با آن کار کنیم .


این سیستم عامل در مدت 2 ثانیه  بالا می آید و در مدت 1 ثانیه  سیستم را خاموش می کند .


سیستم عامل  کالیبری  فقط نسخه ی 32 بیتی دارد و امکان نصب اش روی کامپیوترهای  جدید 64 بیتی امروزی وجود ندارد . بهتر است که از یک کامپیوتر با پردازنده ی اینتل ایکس 86 (32 بیتی) استفاده کنید . هر کامپیوتر که  پردازنده ی 32 بیتی  داشته باشد ( حالا چه پنتیوم و چه  خانواده ی  core  )  امکان  نصب این سیستم عامل را به شما می دهد .



با بقیه ی سیستم عاملهایی که توسط  Fasm  (فسم)  ساخته شده اند تا به حال کار نکرده ام . 



بهرحال  ، فسم توانایی عجیبی در تولید  کوچکترین و ریزترین و سریعترین نرم افزارها و سیستم عاملها را دارد .  این اسمبلر  می تواند تا سرحد ممکن ، نرم افزار یا سیستم عامل را کوچک و فشرده کند و سرعت اجرایش را افزایش دهد .



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


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



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

لذا از طرف آنتی ویروسها بعنوان ویروس شناخته می شوند که البته این گزارش کاملا غلط است .


البته فسم روی ویندوز 10 نفوذ چندانی ندارد چون ویندوز 10 ،  فسم را بخوبی شناسایی کرده و عملا مایکروسافت ، ویندوز 10 را طوری بازنویسی کرده که هیچ نرم افزاری قادر به نفود در ان نیست . یعنی ان اتفاقات عجیب و غریب که در ویندوزهای 7 و 8  شاهدش هستیم و علتش نرم افزارهای فسم می باشند ، در ویندوز 10 شاهد نخواهیم بود.


سیستم جاسوسی ویندوز 10 (ویندوز دفندر)  مرتبا  کامپایلرهای زبان اسمبلی خصوصا  فسم و  روسسم را زیر نظر دارد  و مرتبا به دنبال کدهای مشکوک می گردد  و اگر به مورد مشکوکی برخورد کند سریعا اعلام خطر می کند .


البته الان مایکروسافت فهمیده که  فسم  هیچ خطری برای  ویندوز 10  ندارد و عملا  کمتر شاهد اعلانهای مبتنی بر پیدا شدن بدافزار هستیم .



18- اگرچه فسم سطح پایین ترین کامپایلر زبان اسمبلی است و قاعدتا باید یک زبان کاملا کامپایلی باشد ( که  هست)   اما  این اسمبلر    از یک زبان تفسیری سطح بالا نیز استفاده می کند که البته من هرچی گرامرش را خواندم چیزی متوجه نشدم !!



19-  فسم رابطه ی بسیار خوب و نزدیکی با  زبانهای سطح بالا خصوصا  C  و  جاوا دارد . 

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



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


عملا روحیه ی انعطاف پذیر  آقای توماس (خالق فسم)  باعث شده که عملا بسیاری از دعواهای بین طرفداران زبان اسمبلی و طرفداران زبانهای سطح بالا  از بین برود و این دو گروه در یک انجمن در کنار هم  بصورت دوستانه زندگی می کنند و با یکدیگر تبادل دانش می نمایند و تجربیات و محصولات خود را به یکدیگر  منتقل می کنند .


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


اگر شما طراح زبان برنامه نویسی هستید  انجمن فلت اسمبلر محیط بسیار خوبی است که زبان برنامه نویسی تان را به  اعضای انجمن نشان دهید و در موردش با آنها صحبت کنید .


مسلما  زبانهای سطح بالا در انجمن فلت اسمبلر  می توانند رشد کنند و از مزایای زبان اسمبلی بهره مند شوند .


21- در انجمن فلت اسمبلر  شاهد رونمایی از سیستم عاملهای جدید و زبانهای برنامه نویسی سطح بالا و سطح پایین جدید هستیم و یک محیط بسیار فعال و پویا را شاهدیم .



22- برخی از اعضای انجمن فلت اسمبلر در حال طراحی  ماکروهایی برای فلت اسمبلر به منظور قابل حمل کردن این اسمبلر روی  پردازنده های  میپس ، اسپارک ، موتورولا  و میکروکنترولرهایی همچون  AVR    هستند . 


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


همچنین می توانید سطح بالاترین زبان برنامه نویسی جهان یعنی  plain english را نیز در این انجمن پیدا کنید .


خلاصه  اینکه در این انجمن ، هرچیز نایاب و عجیب و غریبی را می توانید پیدا کرده و براحتی دانلود نمایید .


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



لازم به ذکر است که نسخه ی غیررسمی  فلت اسمبلر را در گیتهاب نیز می توانید پیدا کنید .



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


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



23-  فسم ، قابل حمل ترین کامپایلر زبان اسمبلی است و بشدت درحال بروز شدن است و علاوه بر آقای توماس (طراح  فسم ) حدود  6000 نفر از برنامه نویسان حرفه ای زبان اسمبلی در انجمن فلت اسمبلر به توسعه ی بخشهای  جانبی  فلت اسمبلر کمک می کنند .


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


همچنین تعدادی از سیستم عاملهایی که  توسط   Nasm (نتواید اسمبلر) ساخته شده اند توسط این افراد از اول  با  Fasm  بازنویسی و ریکامپایل شده اند . مثل سیستم عامل معروف  mikeOS  که توسط شخصی بنام مایک ساندرز  ، سالها پیش ساخته شده بود و روش طراحی سیستم عامل با زبان اسمبلی  را شرح داده بود .  الان این سیستم عامل معروف توسط این افراد  از اول  با  فسم بازنویسی شده است .


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


لذا بسیاری از برنامه نویسان سایر اسمبلرها  به سمت  فسم  متمایل شده اند  و عملا  انجمنهای سایر اسمبلرها  تحت الشعاع قرار گرفته و  کم فروغ شده اند !!


مثلا انجمن  نتواید اسمبلر   به یک قبرستان سوت و کور تبدیل شده . 



24-  یکی از امتیازات بزرگ   فلت اسمبلر نسبت به سایر اسمبلرها (بجز RosAsm ) در اینست که  خودمیزبان است یعنی سورس اش توسط خودش ( زبان اسمبلی ) نوشته شده و توسط خودش نیز کامپایل می شود .


البته  این حالت خودمیزبان بودن ابتدا در سال 1998  در RosAsm  پیدا و به دنیا معرفی شد و یکسال بعد در سال 1999  دومین زبان برنامه نویسی خودمیزبان  یعنی Fasm   اختراع شد .


خودمیزبان بودن  Fasm  عملا  باعث شده که بسیاری از برنامه نویسان  خیالشان راحت باشد زیرا دیگه مجبور نیستند برای کامپایل کردن سورس  فلت اسمبلر از زبانهای سطح بالا استفاده کنند .


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


برخی از اسمبلرها مثل  Yasm  و  vasm  هنوز نیامده  ، منسوخ شده اند .   دلیل اش نیز قدرت امپراطوری   Fasm  بر دنیای برنامه نویسی است . 


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


زیرا  اسمبلرها  توسط خودشان  تولید خواهند شد .  از جمله  Jasm  (مخفف  Java assembler )   که با الهام از روی  Fasm  و  با استفاده از زبانهای  اسمبلی و جاوا ساخته شده و یک اسمبلر رایگان و اوپن سورس و خودمیزبان است و عملا از خیلی جهات به  Fasm   شباهت دارد .



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


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


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


شخصا  با لایسنس   GPL  مخالف هستم  زیرا همان بلایی را که بر سر سیستم عامل گنولینوکس  آورد  بر سر  اسمبلر  RosAsm نیز اورده . یعنی عدم سازگاری  نسخه های مختلف یک نرم افزار . 


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


درحالیکه  تمامی نسخه های  Fasm   کاملا  با یکدیگر سازگارند و هیچ مشکلی با هم ندارند  و برنامه های همدیگه  و حتی سورس همدیگه  را  کامپایل می کنند .



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


اما سایر لایسنس های نرم افزار آزاد از جمله  BSD  و  MIT    از حمایت و پشتیبانی  شرکتهای نرم افزاری و توسعه دهندگان  برخوردار شده و عملا روز به روز  بر کیفیت و کارایی شان افزوده می شود .



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



من حدس می زنم  که  در آینده   ،  فلت اسمبلر  بتواند  جایگاه زبان اسمبلی را در میان  10 زبان برنامه نویسی محبوب دنیا  به  رتبه ی بالای برساند زیرا  فلت اسمبلر با زبانهای  سی و جاوا و پایتون   سازگاری و نزدیکی دارد و طرفداران این زبانهای واقعا از فلت اسمبلر  لذت می برند . بنابراین احتمال اینکه   فلت اسمبلر باعث شود  زبان اسمبلی در ردیف دوم یا حتی ردیف اول  این  لیست قرار بگیرد زیاداست .


البته  زبان اسمبلی هنوز هم در لیست 10 زبان برنامه نویسی رایج و محبوب دنیا قرار دارد  ولی در رتبه ی   دهم  لیست  جای گرفته است . .   فلت اسمبلر می تواند اسمبلی را از رتبه ی 10 به رتبه ی 2 یا حتی  1  برساند .



26 -  اگر شما دانشجو یا  فارغ التحصیل رشته ی مهندسی برق (الکترونیک) یا مهندسی کامپیوتر باشید و بخواهید  یک پردازنده یا میکروکنترولر جدید بسازید   پیشنهاد می کنم برای ساختن اش  از  فلت اسمبلر استفاده کنید چون  فلت اسمبلر در دنیا  برای بسیاری از   میکروکنترولرها و پردازنده ها  کاربرد دارد  و برنامه هایی نیز در این زمینه نوشته شده اند . . . 


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


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


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




نکته ی مهم:


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



فلت اسمبلر ، مزایای بسیار زیادی دارد که من  انها را یادداشت نکرده ام  و از انجاییکه من مطالب پستهایم را همیشه بصورت فی البداهه  تایپ می کنم و از قبل یادداشت نمی کنم  بسیاری از  مطالبی که در ذهنم بوده فراموش می شوند .


لذا این بار نیز  بسیاری از مزایای فلت اسمبلر را فراموش کردم !!!




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


1- نسخه ی ویندوزی فلت اسمبلر   شما را با مشکل عدم وجود  لینکر درگیر می کند چون  فلت اسمبلر  در اصل برای سیستم عامل داس ساخته شده بود  درنتیجه  در نسخه ی ویندوزی اش  شما خودتان باید با دست  ،  لینکر را  بنویسید  و اگر شما برنامه نویس زبان ماشین نباشید یعنی با هگز ادیتور برنامه ننوشته باشید  و از معماری نرم افزارهای ویندوز  بی اطلاع باشید  عملا   برنامه نویسی با فلت اسمبلر  برایتان  یک کابوس واقعی خواهد شد .


مگر اینکه از ماکرو  یا رهنمود یا کتابخانه استفاده کنید .   اکثر برنامه های فسم  از مدل کتابخانه استفاده می کنند .  ولی بازهم کار بسیار سختی در پیش دارید . یعنی باید اسامی توابع  API ویندوز را بارها  با دست بنویسید چون فسم ذاتا  لینکر ندارد  و باید  توابع API  ویندوز و کتابخانه های  کرنل ویندوز   را به او  معرفی کنید !!


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



2-  سیستم ماکروهای فلت اسمبلر  بسیار گنگ و پیچیده و تودرتو و دیوانه کننده است . ضمنا نرم افزارهای بزرگ را نمی توانید با ماکرو بنویسید چون با این سیستم تودرتوی پیچیده درگیر می شوید که واقعا  مغزتان را  رنده می کند .


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




3- متاسفانه نسخه ی لینوکسی  فلت اسمبلر  اصلا  ِIDE  ندارد و با  توجه به ساختار ماژولار  لینوکس ،  عملا    نسخه ی لینوکسی نیز نمی تواند  گره گشای شما باشد .



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



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




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


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


نکته ی مهم:


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


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


تمامی سورس فلت اسمبلر  با زبان اسمبلی نوشته شده و می شود و عملا هیچکس حق ندارد این سورس را  با زبانهای سطح بالا  بازنویسی کند . 

 اگر کسی چنین  کاری را انجام دهد کل فلسفه ی زبان اسمبلی را   زیر سوال برده و به این زبان خیانت کرده است .


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




سورس فلت اسمبلر  کاملا (100 درصد) با زبان اسمبلی  نوشته شده است . پس لینکر را نیز باید حتما  با  زبان اسمبلی نوشت . 


+

+

+


در پستهای بعدی  به معرفی چند کامپایلر  زبان اسمبلی  که در شرف انقراض و نابودی هستند   می پردازم .  

این اسمبلرها  برخی هایشان قدیمی و معروف  وبرخی هایشان نیز  جدید هستند ولی   هیچکدامشان نتوانستند  در مقابل  فلت اسمبلر  دوام بیاورند !!


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


فلت اسمبلر  =  زبان  اسمبلی 


زبان  اسمبلی  =  فلت اسمبلر 






تا بعد ....

+


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

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

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

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

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


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


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


+



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


https://vahidmy.blog.ir