به نام خدا


فلسفه اسمبلی


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



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




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


بعد از این ، به کدنویسی نیز می رسیم . صبور باشید . 



فلسفه اسمبلی :


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


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


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


اسمبلی یعنی برنامه نویسی بدون باگ . 


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




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


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



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


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


دیس اسمبلی ویندوز ، ذاتا کپی رایت ندارد و به هیچکس تعلق ندارد اما از آنطرف ، به همه تعلق دارد !! یک تناقض و تضاد جالب و جذاب !!!


همین تناقضگویی هاست که مطلب را شیرین و جذاب می کند ! 


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


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


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


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


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


آدرس پست مجوز آزادی :


مجوز آزادی :: vahidmy (blog.ir)



https://vahidmy.blog.ir/post/FREEDOM%20Licence


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



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





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


این باعث می شود که شما با چشم کاملا باز و همراه با اگاهی کامل و بصیرت و کنترل کامل ،  برنامه نویسی نمایید . 


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


لذا برنامه های اسمبلی دقیقا برخلاف تمام نوشته ها و مقالات این چند دهه ی اخیر ، هرگز باگ ندارند . 


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


اگرچه اسمبلی ذاتا جلوی بسیاری از خطاها و باگها را می گیرد . 


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


این ، شعار نیست . واقعیت است . 




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


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


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


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




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


عمودی ( سبک دیس اسمبلی ) 


افقی ( سبک RosAsm و  Fasm  )  


یک دستور در چند خط ( سبک زبانهای سی و سی پلاس پلاس ) 


چند دستور در یک خط ( سبک زبانهای سی و سی پلاس پلاس ) 


فراخوانی تابع اصلی از تمام اجزای نرم افزار ( سبک زبان سی پلاس پلاس ) 


برنامه نویسی  بالا به پایین ( سبک اکثر زبانهای برنامه نویسی سطح بالا ) 


برنامه نویسی پایین به بالا ( سبک اسمبلر RosAsm و  Fasm و زبان سی پلاس پلاس و برخی زبانهای خاص ) 


اسمبلی درون خطی (inline Assembler) سبک اسمبلی درون دلفی 6 و ویژوال استودیو 2000 و البته ویژوال استودیو 2022  . 


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


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


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



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


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



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


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





4- سادگی و خلوص :  کدهای زبان اسمبلی بسیار ساده و تمیز و خالص و بی ریا هستند و هرگز اهل ریاکاری و تظاهر و فریب نیستند . 


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


این یعنی حذف واسطه ها و دلال ها !!! 


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


سادگی را نیز در نظر بگیرید  . 


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


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


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


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


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


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





5- باینری = سورس .  در زبان اسمبلی با یک حقیقت جالب و بامزه روبرو می شوید و آن حقیقت اینست که در این زبان شما می توانید مستقیما با باینری ( زبان ماشین ) برنامه نویسی کنید و از اینکه می بینید که باینری همان سورس کد است  شگفت زده می شوید . 


وقتیکه شما معنای کد 6a00 را بدانید دیگه با دیدن این کد در هگز ادیتور ( یعنی در شکم نرم افزارهای مختلف )   براحتی می توانید نرم افزارهای دیگران را هک (= مهندسی معکوس ) نمایید . 


کد 6a00 که از طریق هگز ادیتور دیده می شود و در شکم نرم افزارهای ساخته شده توسط اسمبلی ، ذاتا وجود دارد یک کد زبان ماشین ( باینری ) است که البته در مبنای هگزادسیمال نوشته شده است . 


6a00= push 00= push MB_OK= OK button 


بله ، کد 6a00    دکمه ی ok را می سازد و به نمایش می گذارد . 




نکته ی مهم و جذاب :



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


بنابراین :


6a00=6A00


این امتیاز را به ندرت در زبانهای سطح بالا ؛ پیدا می کنید 


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



حالا یک هگزادیتور را اجرا کنید و به باینری نرم افزارهای ویندوزی نگاه کنید . هرجا که دیدید کد 6a00  در ابتدای سکشن کد ، نوشته شده است و بعد از آن کد 68 یا ff15 آمده است بدانید که آن نرم افزار توسط زبان اسمبلی نوشته شده و در این نرم افزار ، این کدها بدین ترتیب رمزگشایی می شوند :


68=push 

ff15 = call Windows Functions 

e8= call internal routins 


درواقع ،  تفاوت بین FF15 و E8 در اینست که اولی یعنی ff15   ،  کتابخانه ها و توابع سیستم عامل ویندوز و سایر توابع خارجی را فراخوانی می کند ولی دومی یعنی e8   ، روتینهای درون خود برنامه را احضار می کند وگرنه هردو به معنای call ( احضار - فراخوانی - صدا زدن )   هستند . 




فرق 6a  و  68  در اینست که اگرچه هردو به معنای push می باشند اما اولی یعنی  6A  ،  ثابتهای سیستم عامل ویندوز ( چیزهایی مثل  MB_OK  یا همان دکمه ی OK  یا WM_CREATE  یا همان رویداد  Form_Load در زبان بیسیک )  و نیز اعداد را می سازد و تولید می کند و دومی  یعنی  68   ، متغیرهای درون خود برنامه را به سیستم معرفی می کند . 


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



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


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


مثال :


WM_CREATE = Form_Load


WM_MOUSEMOVE = MouseMove


 و الی آخر ... 


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


یا مثلا ثابت False ( غلط )  در زبان اسمبلی به کد  00  در زبان ماشین ، ترجمه می شود 


یا مثلا ثابت  True (درست)  در زبان اسمبلی به کد 01 در زبان ماشین ، ترجمه می شود . 


مثال :


می خواهیم به پردازنده کامپیوتر بگوییم که فلان مقدار ، درست (True) یا غلط  (False ) است . 


به این شیوه کد می نویسیم :


mov eax , False


فلان چیز ، غلط است 



mov eax , True


فلان چیز ، درست است 



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


xor edx , edx  = False   ; pascal 


xor eax , eax  = False  ;  C 


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


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



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


عملا دستور  mov eax , False بسیار خواناتر از دستور  xor eax , eax می باشد . 


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


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


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


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


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


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


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


از سال 1960 تا سال 1972 میلادی ( عصر طلایی کامپیوتر)  ، تمام سیستم عامل ها ( سیستم های عامل )  با زبان اسمبلی نوشته می شدند . آن موقع ، زبان C  دقیقا کجا تشریف داشتند ؟؟؟؟!!!!



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


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


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


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


به پستهای  انقلاب اسمبلی و  UNIX  در همین وبلاگ وحیدمی مراجعه کنید و با تاریخچه ی سیستم عاملها و زبانی که این سیستم عاملها با آن نوشته شده اند آشنا شوید تا بفهمید که  زبان C  فقط برای جبران مشکلات زبانهای B و BCPL  ساخته شد و اولین کد سیستم عامل یونیکس نیز با زبان اسمبلی نوشته شد نه زبان C  !!


آدرس پست انقلاب اسمبلی :


انقلاب اسمبلی :: vahidmy (blog.ir)



https://vahidmy.blog.ir/post/Assembly-Revolution




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



دانلود سورس کد سیستم عامل یونیکس اوریجینال دهه 60 میلادی ( نوشته شده توسط دنیس ریچی و با زبان اسمبلی ) :


https://vahidmy.blog.ir/post/The%20Unix%20Heritage




دانلود سورس کد سیستم عامل یونیکس :: vahidmy (blog.ir)




آدرس پست یونیکس ( تاریخچه ی سیستم عاملها خصوصا سیستم عاملهایی که قبل از اختراع زبان برنامه نویسی C  و با کمک زبان برنامه نویسی Assembly   و Fortran  ساخته شده بودند ) :



UNIX :: vahidmy (blog.ir)



https://vahidmy.blog.ir/post/UNIX


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


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


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


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


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


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


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


اصلا مگر می توانیم روی یک کامپیوتر واحد ، بیش از یک مدل پردازنده پورت کنیم ؟؟؟  غیرممکن است . 


مگر اینکه از مین فریمهای غول پیکر شرکت  Cray  استفاده کنیم !!!!


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


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


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




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


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


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


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


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


https://flatassembler.net


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


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


Fasm  به زودی زبان اسمبلی را به رقیب سرسخت زبانهای زیر تبدیل خواهد کرد :


C/Pascal/php/html/java/c-sharp/c++/ruby/python/javascript/

basic/fortran/cobol/rust/typescript/d/go/A+/J#/perl/xml/pl1/....



شاید بپرسید چطوری چنین چیزی ممکن است ؟؟


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


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



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




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


نقشه ی وبلاگ وحیدمی :


https://vahidmy.blog.ir/sitemap.xml


نقشه وب گاه (blog.ir)




اینکه  در وب فارسی می گویند : زبان یک ضرورت بود و اگر زبان C اختراع نمی شد ما هرگز سیستم عامل نداشتیم !!!!!  فقط یا از روی بی خبری و بی اطلاعی است یا از روی بیسوادی یا از روی تعصب و .... 



بگذریم ... 








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



6- آزادی 


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


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


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



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


لذا من اصرار دارم برای برنامه نویسی با زبان اسمبلی ، از هگز ادیتور استفاده کنم . 



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



جواب :  گور پدر اتکرها و هکرهای کلاه سیاه و مجرمین سایبری


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


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

با چاقو می توان خوراک پخت و مردم را سیر کرد و با همان چاقو می توان همان مردم را به قتل رساند ! 


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


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



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


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



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


حالا اینکه کدام کامپایلر کودکانه ی زبان اسمبلی را بکار گیرم  یک بحث دیگه است که بعدا به آن می پردازم !


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


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


لذا من می توانم از این موضوع ، سو استفاده (!!!) کنم و از RosAsm برای برنامه نویسی و مهندسی معکوس ، استفاده نمایم . 


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


من طرفدار سیستم وینتل ( ویندوز + اینتل ) هستم . 


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


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


البته  برنامه ی قدرتمند c32asm نیز  گزینه ی خوبی است زیرا او نیز توسط کرکرهای چینی به امان خدا رها شده است !!!


بهرحال اسمبلر RosAsm  مرا از نصب مجدد ویژوال استودیو و دلفی بی نیاز می کند . 


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


اگر از سیستم وینتل متنفر هستید به سمت Fasm بروید . 



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



هرگونه نگاه به کدهای زبانهای سطح بالا ، شما را وسوسه می کند که از اسمبلی فاصله  بگیرید و خودتان را در آغوش زبانهای سطح بالا بیفکنید و احساس آرامش داشته باشید !!!!!!


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


مایکروسافت مثل زالو خون می مکد .  



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


البته بعید است چنین رویایی به حقیقت بپیوندد . 



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


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


تا بعد ....