فلسفه اسمبلی
به نام خدا
فلسفه اسمبلی
من به عنوان ورژن ایرانی جناب ریچارد استالمن ! مدتهاست که بجای آموزش برنامه نویسی با زبانهای ماشین و اسمبلی ، دارم فلسفه بافی می کنم و شعار می دهم و بیانیه صادر می کنم و مرتبا این و آن را متهم می کنم و به همه برچسب می زنم اما تا حالا حتی یک خط کد اسمبلی را ننوشته ام !!
مخاطبین وبلاگ ، از این همه پرحرفی و تکرار مکررات و وعده و وعید ، خسته و بیزار شده اند . این است که باعث شده هر روز از آمار بازدیدکنندگان کاسته شود .
اما لطفا اجازه دهید برخی از مفاد فلسفه ی زبان اسمبلی را همینجا به شما بگویم و خودم و شما را خلاص کنم :
بعد از این ، به کدنویسی نیز می رسیم . صبور باشید .
فلسفه اسمبلی :
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 ساخته شده بودند ) :
https://vahidmy.blog.ir/post/UNIX
پست بالا ثابت می کند که بسیاری از سیستم عامل ها قبل از سال 1972 میلادی ( سال اختراع زبان برنامه نویسی C و شروع دوران وحشت و باگ و حملات سایبری ) توسط زبان اسمبلی یا با ترکیبی از فورترن و اسمبلی ، ساخته شده بودند .
بنابراین وجود یا عدم وجود زبان برنامه نویسی C تاثیر چندانی بر روند تولید سیستم عامل نداشت و فقط از قابلیت حمل سخت افزاری محروم می شدیم که چندان مهم نیست .
قابلیت حمل سخت افزاری ( پورت کردن نرم افزار روی انواع پردازنده ها ) یک نیاز کاذب و دروغین است . این نیاز کاذب در اواخر دهه ی 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
اینکه در وب فارسی می گویند : زبان C یک ضرورت بود و اگر زبان C اختراع نمی شد ما هرگز سیستم عامل نداشتیم !!!!! فقط یا از روی بی خبری و بی اطلاعی است یا از روی بیسوادی یا از روی تعصب و ....
بگذریم ...
زبان اسمبلی ، با این سبک خوانا و مستقیم و تمیز عملا سعی دارد که بین انسان و کامپیوتر آشتی برقرار کند و زبان مشترک انسان و ماشین باشد .
6- آزادی
بزرگترین دلیل برنامه نویسان عاقل و باهوش برای فرار از چنگ زبانهای سطح بالا و استفاده ی محض از زبان اسمبلی این است که دوست دارند آزاد باشند و از غل و زنجیرهای شرکتهای گلوبالیست ( اپل و مایکروسافت و گوگل ) رها شوند .
برنامه نویسی با ویژوال استودیو یعنی تن دادن به خفت و خواری و اسارت و بردگی .
ویژوال استودیو و دلفی و سایر آت و آشغالها را به سطل زباله بیاندازید و منحصرا با زبانهای ماشین و اسمبلی برنامه نویسی کنید تا طعم شیرین آزادی و آزادگی و حریت و استقلال و خودکفایی را بچشید و از زندگی لذت ببرید .
برنامه نویسی با هگز ادیتور بالاترین و بیشترین سطح آزادی را به شما هدیه می دهد .
لذا من اصرار دارم برای برنامه نویسی با زبان اسمبلی ، از هگز ادیتور استفاده کنم .
سوال : مگر نگفتید که اسرار هگز ادیتورها را با خودتان به گور می برید و مگه نگفتید افشای اسرار هگز ادیتورها باعث سو استفاده ی مجرمین سایبری و اتکرها و هکرها می شود . پس چه شد که باز هم از هگز ادیتور حرف می زنید ؟؟؟!!!
جواب : گور پدر اتکرها و هکرهای کلاه سیاه و مجرمین سایبری .
سو استفاده از زبان ماشین و هگز ادیتور هیچ مسئولیت شرعی و قانونی و عرفی بر گردن من نمی اندازد و اصلا به من ربطی ندارد .
هگز ادیتور همچون یک چاقو می باشد که هم استفاده ی خوب دارد و هم استفاده ی بد .
با چاقو می توان خوراک پخت و مردم را سیر کرد و با همان چاقو می توان همان مردم را به قتل رساند !
این وسط ، هگز ادیتور در حکم همان چاقو می باشد .
من ضمن اظهار انزجار و بیزاری از دارک وب و هکرهای کلاه سیاه و مجرمین سایبری ، رسما اعلام می کنم که تنها دلیلی که باعث شد به دنیای وبلاگنویسی قدم بگذارم ، افشای اسرار هگز ادیتورها بود و بس .
بحث امنیت ملی نیز هیچ ربطی به هگز ادیتور ندارد . این فقط یک شوخی بود !
مسئولیت هرگونه سو استفاده از قدرت و انعطاف پذیری زبانهای ماشین و اسمبلی بطور کامل بر عهده ی مجرمین سایبری و اتکرها و هکرهای کلاه سیاه می باشد و من شرعا و قانونا از هرنوع پاسخگویی مبرا هستم و هرگز پاسخگوی خرابکاری اتکرها نیستم .
البته از آنجاییکه معماری ویندوز ، بسیار بزرگ و پیچیده و تو در تو می باشد لذا از برنامه نویسی مستقیم با هگز ادیتور چشم پوشی می کنم و با همان زبان اسمبلی کارم را ادامه می دهم .
حالا اینکه کدام کامپایلر کودکانه ی زبان اسمبلی را بکار گیرم یک بحث دیگه است که بعدا به آن می پردازم !
شاید RosAsm به دلیل اینکه متوقف شده است و مالک اش به سمت لینوکس مهاجرت کرده و با دنیای ویندوز خداحافظی کرده است گزینه ی مناسبی برای تدریس زبانهای ماشین و اسمبلی و مهندسی معکوس باشد .
بله پروفسور رنه تورنویس ، خالق RosAsm از سال 2012 میلادی برای همیشه از ویندوز خداحافظی کرده و به سمت لینوکس رفته است و عملا این اسمبلر قدرتمند و عالی که خوراک خوبی برای مهندسی معکوس می باشد به امان خدا رها شده است و هیچ سایت یا وبلاگ رسمی یا انجمن رسمی ندارد .
لذا من می توانم از این موضوع ، سو استفاده (!!!) کنم و از RosAsm برای برنامه نویسی و مهندسی معکوس ، استفاده نمایم .
ضمن اینکه من بجز ویندوز ، سایر سیستم عاملها را اصلا سیستم عامل نمی دانم و بجز پردازنده ی اینتل سایر پردازنده ها را پردازنده نمی دانم .
من طرفدار سیستم وینتل ( ویندوز + اینتل ) هستم .
لذا تحت این سیستم ، با زبان اسمبلی و ماشین سروکار دارم و سرو کار خواهم داشت .
هم برای برنامه نویسی و هم برای مهندسی معکوس ، سعی می کنم از RosAsm استفاده نمایم .
البته برنامه ی قدرتمند c32asm نیز گزینه ی خوبی است زیرا او نیز توسط کرکرهای چینی به امان خدا رها شده است !!!
بهرحال اسمبلر RosAsm مرا از نصب مجدد ویژوال استودیو و دلفی بی نیاز می کند .
از Fasm می توانم برای تمام سیستم عاملها و تمام پردازنده ها و تمام فناوریها استفاده کنم .
اگر از سیستم وینتل متنفر هستید به سمت Fasm بروید .
بهرحال این دو کامپایلر رایگان و اوپن سورس و خودمیزبان و قدرتمند و انعطاف پذیر زبان اسمبلی می توانند بسیاری از مشکلات را حل کنند به شرطی که دست روی دلتان بگذارید و هرگز به کدهای زبانهای سطح بالا نگاه نکنید .
هرگونه نگاه به کدهای زبانهای سطح بالا ، شما را وسوسه می کند که از اسمبلی فاصله بگیرید و خودتان را در آغوش زبانهای سطح بالا بیفکنید و احساس آرامش داشته باشید !!!!!!
البته آرامشی کاذب که شما را فریب می دهد و شما را به سمت زندان طلایی ویندوز راهنمایی می کند و شما را به برده های مایکروسافت تبدیل می کند .
مایکروسافت مثل زالو خون می مکد .
هر زمان که مایکروسافت ، زبان اسمبلی را به رسمیت شناخت و سورس کد ویندوز و آفیس و ویژوال استودیو را بدون هیچ قید و شرطی و با لایسنس GPL در اختیار مردم دنیا گذاشت و دست از جاسوسی و عوامفریبی و دروغ و پول پرستی و انحصارطلبی و فضولی و قلدری و دیکتاتوری ، برداشت آنوقت می توانم به مایکروسافت اعتماد کنم .
البته بعید است چنین رویایی به حقیقت بپیوندد .
خب ، در این پست سعی کردم برخی از مفاد فلسفه ی زبان اسمبلی را به شما نشان بدهم و کمی هم کدنویسی کردم که نگویید این بنده ی خدا همچون استالمن فقط بلد است پرحرفی و فلسفه بافی کند و سواد برنامه نویسی ندارد .
سایر مفاد فلسفه ی زبان اسمبلی را در پستهای بعدی همراه با قطعات کوچک کد اسمبلی بازگو خواهم کرد . انشاا...
تا بعد ....
- ۰۱/۰۶/۰۴