vahidmy

وبلاگ شخصی وحید محمدی

vahidmy

وبلاگ شخصی وحید محمدی

وحیدمی

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


آدرس وبلاگ وحیدمی :

Home Page


https://vahidmy.blog.ir

+


Archive

آرشیو و بایگانی وبلاگ وحیدمی

https://vahidmy.blog.ir/archive

+


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

Sitemap

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

+

خوراکخوان وبلاگ وحیدمی

Feed

RSS

https://vahidmy.blog.ir/rss

+

آدرس مورد استفاده خزنده ها روباتها و موتورهای جستجوگر

Robot

https://vahidmy.blog.ir/robots.txt


+

مشخصات وبلاگ وحیدمی:


ساعات انتشار پست جدید وبلاگ :

بیست و چهار ساعته

وضعیت انتشار پست : نامنظم . در طول شبانه روز و در صورت صلاحدید ؛ پست جدید منتشر می کنم.


نام مدیر : وحید محمدی

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

ژانر : تمام ژانرها

کاربرد : همه منظوره

هدف وبلاگ : به اشتراک گذاشتن دانش و تجربه با مردم و پرداخت زکات علم

مقصد مدیر وبلاگ : کسب رضای خداوند .

جنس وبلاگ : وبلاگ شخصی

تاریخ تاسیس : تیر 1398 خورشیدی



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


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

بروزرسانی:

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

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



آدرس وبلاگهای تخصصی :

https://spasm.blog.ir

https://fasmy.blog.ir

https://binasm.blog.ir

طبقه بندی موضوعی
مطالب پربحث‌تر
  • ۰۱/۰۴/۱۱
    adc
نویسندگان
پیوندها

فلسفه اسمبلی

جمعه, ۴ شهریور ۱۴۰۱، ۱۱:۲۷ ق.ظ






به نام خدا


فلسفه اسمبلی


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



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




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


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



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


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  در اختیار مردم دنیا  گذاشت و دست از جاسوسی و عوامفریبی و دروغ و پول پرستی و انحصارطلبی و فضولی و قلدری و دیکتاتوری ، برداشت آنوقت می توانم به مایکروسافت اعتماد کنم . 


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



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


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


تا بعد ....









  • ۰۱/۰۶/۰۴
  • vahidmy

Assembly Language

C32asm

Fasm

GPL

Microsoft

RosAsm

UNIX

WM

Windows

c32asm

fasm

flat assembler

flatassembler.net

hack

hacker

hex editor

programming

programming by hex editor

programming without Bug

reverse engineering

win32 Assembly

آزادی

آزادی واقعی

احیای زبان برنامه نویسی اسمبلی

اسرار هگز ادیتورها

اسمبلی

اسمبلی = دیس اسمبلی

اسمبلی آزادی واقعی است

اسمبلی آسان

اسمبلی اوپن سورس واقعی است

اسمبلی خالص

اسمبلی ساده

اسمبلی نسخه ی قابل فهم زبان ماشین است

اسمبلی کاملا سطح پایین

اسمبلی یک زبان سطح میانی است

افشای حقایق

انعطاف پذیر

انعطاف پذیری

انقلاب

باینری

باینری=سورس

برنامه نویسی

برنامه نویسی با زبان اسمبلی

برنامه نویسی با زبان ماشین

برنامه نویسی با هگز ادیتور

برنامه نویسی بدون باگ

برنامه نویسی تک فایلی

برنامه نویسی یکپارچه

بیسواد

بیسوادی

تاریخچه سیستم عامل ها

دنیس ریچی

روسسم

روسسم گرامر سایر اسمبلرها را نیز قبول می کند

ریچارد استالمن

زبان

زبان اسمبلی

زبان برنامه نویسی

زبان برنامه نویسی اسمبلی

زبان برنامه نویسی سطح میانی

زبان برنامه نویسی سی

زبان برنامه نویسی ماشین

زبان سطح بالا

زبان سطح میانی

زبان سطح پایین

زبان شناسی

زبان ماشین

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

زبان ماشین یعنی قدرت

زبانشناسی

زبانهای سطح بالا

زبانهای سطح پایین

فسم

فلت

فلت اسمبلر

فلسفه بافی

فناوری اطلاعات

فناوریهای مدرن

لینوکس

ماکرو

مایکروسافت

مهندسی معکوس

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

مهندسی معکوس نرم افزار

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

هدف از وبلاگنویسی

هک اخلاقی

هک سیاه

هکر

هگز ادیتور

هگزادسیمال

وبلاگ وحیدمی

وبلاگنویسی

وحیدمی

ویندوز

پارسر

پاسکال

پردازنده

پردازنده ی اینتل

چشم کاملا باز