خوب حالا چیزی که من میخوام بدونم این هست که آیا میشه به صورت مستقیم و با همین OPCode ها یه پردازنده دستور داد؟
خوب پردازنده كه هگز نميفهمه فقط صفر و يك! هگزادسيمال براي انسان قابل درك هست اگرنه بايد كلي صفر و يك ميزاشتن
در كل حرف شما درسته اما بايد معادل باينري رو روي حافظه قرار بديد و بعد بتونيد اجراش كنيد
مثال:
SOURCE:
mov ax,10
mov bx,20
add ax,bx
MACHINE CODE:
B8 0A 00
BB 14 00
03 C3
ميبينيد دستورات اسمبلي ما توسط اسمبلر تبديل به كد ماشين شده اما نمايش اون به صورت هگزادسيمال هست فقط براي درك بهتر انسان بدليل نزديكي به دسيمال حتما ميدونيد كه كامپيوتر هاي ما دودويي هستند يعني ميتونه ولتاژ در يك بازه 1 معني شه و در بازه اي صفر ، تا بشه اعمال منطقي رو انجام داد.
این ادیتور و لینکر و .... رو باید با چه زبانی بنویسم ؟؟ خود اسمبلی؟؟
بیشتر هدف من این هست که بدونم اون زمان چه جوری یه اسمبلر رو مینوشتن
قدیما که زبان سطح بالا نبود اسمبلی بود که خودش نیاز با اسمبلر داشت حالا این اسمبلر رو با چی می نوشتن ؟؟!؟
من يك لينك در مورد تاريخچه كامپيوتر گذاشتم اگر نگاه ميكردين خوب بود چون ميديدن قبل از اينكه اسمبلي هم باشه
اولين كامپيوتر ها مستقيما بايد دستور ماشين برنامه ميدادي صفر و يك اونم از طريق پانچ هاي ورودي يعني سخت افزاري طراحي شده بوده
و با اون ورودي ميدادن به كامپيوتر ها كه محدوديت چند صد دستور داشت ، همزمان با پيشرفت هاي كامپيوتر در حوزه سخت افزار و توانايي ذخيره داده روي حافظه هاي مانا و توانايي پردازنده ها در دسترسي به حافظه و نياز مبرم به برنامه هاي بيشتر و با كارايي بالاتر بود كه نوشتن برنامه با زبان ماشين بسيار كند پيش ميرفت و اشكال زدايي مشكل ديگري بود در كل برنامه نويسي به اين زبان كار هركسي نيست،كه اسمبلي يا كد سمبليك به ميدون اومد كه نيازي به حفظ دستور و اشتباه رو كم كنه مثلا شما يك صفرو يك رو اشتباه ميزدي برنامت خراب ميشد و ديباگ كردنش كاري مشكل بود و از طرفي شما معادل دستورات پردازنده رو حفظ ميكردين كه بسيار ساده هست،زبان اسمبلي يك كد سمبليك و معادل يك دستور ماشين هست كه اسمبلر كد اسمبلي رو تبديل به زبان ماشين ميكنه
در ارتباط يا اون لينكي كه اشاره داشتين opcode ها دستوراتي هست كه پردازنده ميشناسه و براي انتقال اطلاعات،محاسبات و كنترل و تصميم گيري هست حالا اين دستورات بعضي بدون عملوند مثل cli,cld,aaa و... بعضي با يك عملوند مثل call,inc,jl,... و بعضي با دو عملوند هستند مثل mov,lahf,cmp و ...
پس بايد به طريقي برنامه رو روي رم قرار داد و بعد ip,cs به اول برنامه اشاره كنه و اجراش كنه همين
براي اديتور هم نمي گم سي يا زبان ديگه چون تا اين قسمتو درك نكنيد نمي تونيد با اسمبلي كامپايلر بنويسيد :d
پس همون اسمبلي كه بشه يك اسمبلر نوشت و اديتور و بوت لود و كرنلي ساده (براي بار كردن برنامه هاي شما در رم و تنظيم ثباتها) همه با اسمبلي باشه بدليل ذكر شده بالا
اگر هنوزم ميگين چطور اسمبلر نوشتن اونو با زبان ماشينن نوشتن مثل برنامه هاي معمولي اگر به سورسي كه بالا گذاشتم و تبديل به زبان ماشين كردم نگاه كنيد ميبينيد اون زمان بايد به اون ترتيب برنامه اي مي نوشتن كه
كد هاي شما رو بگيره و تبديل به معادل زبان ماشين كنه همين
موفق باشي