سؤال

أنا أعمل على نقل uc/OS-II من DOS إلى x86 (الوضع الحقيقي).احتاج:

  1. مترجم لإنشاء تجميع x86 للوضع الحقيقي 16 بت

  2. مجمع لتجميع التجميع الذي تم إنشاؤه في ملف كائن

  3. رابط لربط ملفات الكائن معًا وإخراج تنسيقات قابلة للتنفيذ (تنسيقات ثنائية أو تابوت أو PE أو ELF على ما يرام)

  4. مكتبة قياسية دون استدعاء أي خدمات DOS (int 21h)، تعتمد فقط على خدمة BIOS.

أنا أتساءل عما إذا كان هناك أي سلسلة أدوات يمكنها القيام بذلك.

هل كانت مفيدة؟

المحلول

تفحص ال فري دوس مشروع.يملكون ادوات المطورين والتي تشمل المترجمين والمجمعات والروابط.ربما يتعين عليك تعديل المكتبة القياسية، بحيث تستخدم مكالمات BIOS بدلاً من int 21h.

نصائح أخرى

المترجمين 16 بت؟وقد ذكرنا هنا العديد منها:

هل هناك مترجم C يستهدف 8086؟

بشكل عام، يتم استخدامها للتدريبات الأكاديمية، لذلك إذا كنت تستهدف مؤسسة تعليمية، يمكنك العثور على الكثير من الأمثلة أيضًا:

http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086

في وظيفة سابقة كان لدينا مشروع يعتمد على نظام uc/OS الذي يعمل على منصة x86 في الوضع الحقيقي.استخدمنا TopSpeed ​​C بدلاً من مترجمات Borland أو Microsoft الأكثر شهرة، لأن TopSpeed ​​C كان الوحيد من بين المجموعة المتاحة والقابلة للتطبيق في الوقت الذي تم فيه الحصول على volatile يمين.وهو ما تحتاجه بشدة عند بناء uc/OS.لقد أخطأ كل من Turbo C وMicrosoft C (وأعتقد أن QuickC أيضًا) في الوصول إليهما volatile المتغيرات - عادةً ما يتم تخزين القيم مؤقتًا في السجلات والكسر المماثل.

ومع ذلك، ستواجه صعوبة في الحصول على TopSpeed ​​C.وبناء جملة المجمع الخاص به هو ...فريد.(أعتقد أنه يعتمد على Modula-2 أو شيء من هذا القبيل؛وينتهي الأمر بأن يكون مختلفًا تمامًا عن MASM/TASM/nasm الذي قد تكون أكثر دراية به 100 مرة.)

تحقق من أي مشروع محمل إقلاع، مثل GRUB.يجب أن يكون واضحًا أنهم بحاجة أيضًا إلى كل ما ذكرته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top