السلام عليكم
كيف ينتقل البرنامج من وضع 16 بت إلى 32؟؟؟
لو أحد يشرح الموضوع ده مهم
وياريت بالسي أو السي++
من لديه القدرة على الشرح ويملك المعلومات لا يبخل علينا
تحياتي
السلام عليكم
كيف ينتقل البرنامج من وضع 16 بت إلى 32؟؟؟
لو أحد يشرح الموضوع ده مهم
وياريت بالسي أو السي++
من لديه القدرة على الشرح ويملك المعلومات لا يبخل علينا
تحياتي
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
البرنامج لا ينتقل من وضع لآخر.
لديك معالج يدعم 32 بت فسيقوم بمعالجته على هذا الأساس.
إن كان برنامجك مكتوب حتى يتم استثماره كـ 16 بت على معالج 32بت فسيتم تجاهل الـ 16 بت الأخرى المسموحة في مسجلات المعالج registers ولن يتم الاستفادة منها لكنها ستبقى موجودة بالتالي ستخسر أداء فقط.
إن كان البرنامج مكتوب لـ 32بت وتقوم بتشغيله على معالج 16بت فلن يعمل لأن الملف التنفيذي يحوي بايتين في File Header تحدد المعالج الأدنى الذي يمكن العمل عليه ونظام التشغيل سيقوم بقراءة هذه المعلومات ويحدد فيما إذا كان سيكون قادر على تنفيذه أم لا.
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
الاخ mandareka
هل تقصد في حالة نظام تشغيل??
يعني انك تجعل نظامك يعمل على 32بت ام انك تقصد شيئ اخر
العمل كثير و الوقت قليل أعاننا الله
بارك الله بكم
اخي الكريم،، نعم أقصد في حالة نظام التشغيل
((بالشرح))
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
حسنا ساحاول الشرح على الرغم اني لم اتعاطى مع برمجة انظمة التشغيل مند سنتين -_-
لعمل نطام التشغيل طريقتين
تستطيع ان تكتب النواة في ال 16 بت او ما يعرف بالنمط الحقيقي real mode
او تستطيع ان تكتبها في 32بت او ما نعرفه بالنمط المحمي protected mode
الشيئ الجميل حول 16 بت انه يسمح لك بمناداة المقاطعات الموجودة في البيوس
لكنه سوف يقيدك بحاجز 1 ميغا
لكن هدا لن يقيدك ادا كنت تنوي ان تكتب نواة من المتوقع ان تزيد فيها كل مرة
الحل ادن ان تتحول الى 32بت -----> 4Gb of memory ;)
لكن كيف....
الجواب هو ان تقوم بتفعيل البوابة 20... :lol:
لا تسالني عنها لاني بكل صراحة لا اتدكر -_-
الامر بسيط جدا
يجب ان تعطي محمل النظام القدرة على تفعيل البوابة قبل ال يقوم بتحميل النواة
نقوم بتمرير قيم خاصة عبر البورت و 0x60 ايضا البورت 0x64
الكود التالي سوف يفعل البوابة 20
;; ;; NASM 32bit assembler ;; [bits 32] [section .text] enable_A20: cli call a20wait mov al,0xAD out 0x64,al call a20wait mov al,0xD0 out 0x64,al call a20wait2 in al,0x60 push eax call a20wait mov al,0xD1 out 0x64,al call a20wait pop eax or al,2 out 0x60,al call a20wait mov al,0xAE out 0x64,al call a20wait sti ret a20wait: in al,0x64 test al,2 jnz a20wait ret a20wait2: in al,0x64 test al,1 jz a20wait2 ret
للامانة العلمية الكود ليس لي
http://wiki.osdev.org/A20_Line
ارجو ان اكون افدتك
العمل كثير و الوقت قليل أعاننا الله
وبارك الله فيك
وأطعمك لحم ديك
مشكور كتير
دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب
حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .
الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية
الامة الاسلامية تحتاج لاحداث تسحقها سحقا وتمعسها معسا لتفكر تفكيرا جماعيا بالتغير لان وحدة المشاعر لوحدها لاتكفي وهذة الاحداث كلها خير
ادا كان عندك اي استفسار يمكنك ان تطرحه
و يمكنك ادا كنت خبير في الاسمبلي ان تراجع سورس محمل النظام قروب
keep in touch ;)
العمل كثير و الوقت قليل أعاننا الله
ما هذا الكود الضخم اخى fkugd2003 :lol: الموضوع ابسط من ذلك
للتحويل من ال real mode الى ال protected mode فقط قم عمل set ل PE bit الموجوده داخل ال cr0 register
والكود كالتالى :-
تكوين ال cr0 هو
CR0: |PG|----RESERVED----|ET|TS|EM|MP|PE|
لا تنسى ان كل ذلك بعدما قمت باعداد جدول GDT
EraMaX :wink:
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…