In the name of  GOD



programming by hex editor part 1



The  machine code  is  The  KING  of  programming  languages. 


The  machine code  is  REAL  programming  language.


Other  programming  languages  are  pseudo  code:


No HLLs  (fortran,cobol,lisp,ada,pascal,basic

,forth, algol, C ,

C++, C#  , D ,B , BCPL, java, python,perl,ruby, A+ ,vala ,foxpro,

,rust,swift,Go ,php,html,Css,Asp,ASP.Net,plain English programming , …………….).


     No Assembly (masm,nasm,fasm,goasm,tasm

,RosAsm,Uasm,

vasm,Yasm,Gas,HLA,...………).



 The Machine code  only .  


The Machine code is  Real  programming language.


The Machine  code is  Open source  :  Binary = Source



Vahid  mohammady . Iran.


https://vahidmy.blog.ir



Binary (machine code)  :  0  1


Hexadecimal  table (machine code):


00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f

30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f

40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f

60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f

70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f

80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f

90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f

a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af

b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf

c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf

d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df

e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef

f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff






بنام خدا


برنامه نویسی با هگز ادیتور  بخش 1 :


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


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


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


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


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



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


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



دوز  دیوانگی ام  از  پروفسور رنه تورنویس ( خالق  اسمبلر  RosAsm ) بیشتر است !!


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


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


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


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


من زبان ماشین را بر مبنای  هگزادسیمال  یاد می دهم . یعنی طبق همان جدول بالا  ( 00 تا  FF ) . 


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


 باینری ( 0 و  1 )   ( مبنای اصلی که  مستقیما توسط  پردازنده درک و اجرا می شود)


هگزادسیمال ( 0 تا 9 و   A   تا  F ) 


دسیمال ( 0 تا 9 )  اعداد طبیعی قابل فهم برای انسان


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




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


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


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

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


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



برای شروع تدریس فعلا این چیزها را  بخاطر بسپرید :


 4D5A   = MZ  (مارک زبیکووسکی معمار سیستم عامل داس)


5045 =  PE  (فایل اجرایی قابل حمل)


4C01  =  INTEL  8086/80286/80386/80486/PENTIUM/CORE I3/I5/I7....


6A00 = PUSH 00  =  PUSH MB_OK  = OK


FF15401000  =  CALL WIN32 API HINT


74 = JZ  (JUMP IF ZERO FLAG IS 1) =  EQUAL



C3 =  RET  =  RETURN TO OS


CC  =  HLT  =  HALT  OF  CPU 



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


بقیه ی کدهای زبان ماشین را در پست بعدی ، رمزگشایی می نمایم .  


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


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


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


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


Programming by hex editor



در دنیا هزاران hex editor   ( هگز ادیتور )  وجود دارد .  هرکدام را که انتخاب کنید  فرقی نمی کند .


زیرا زبان ماشین  از تمامی هگز ادیتور های دنیا بعنوان  IDE  ( محیط برنامه نویسی )  استفاده می کند  و به هیچ   هگز ادیتوری  وابستگی ندارد  . 


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


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

ولی استفاده از حروف کوچک  هیچ ایرادی ندارد .


مثلا  بین FF15  و  ff15   هیچ فرقی وجود ندارد چون هردو به معنای call  می باشند و  آدرس مربوط به توابع API ویندوز را احضار می کنند   یا بین  6A00  و   6a00  نیز هیچ فرقی وجود ندارد زیرا هردو  باعث تولید دکمه ی  ok  می شوند.


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


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


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


 فراموش نکنید که   زبان ماشین یعنی قدرت


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


Binary = Source


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


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


با تشکر .


نکته ی مهم :

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


  http://vahidmy.blog.ir/post/The-Machine-Code-IDE


+


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

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

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

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

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


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


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


+



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



https://vahidmy.blog.ir


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