أ مترجم هو برنامج أن يترجم الإنسان للقراءة مصدر الرمز في رمز الجهاز القابل للتنفيذ الكمبيوتر. للقيام بذلك بنجاح ، يجب أن تتوافق الكود القابل للقراءة مع بناء الجملة قواعد أي لغة برمجة مكتوب فيها. المترجم هو مجرد برنامج ولا يمكنه إصلاح الكود الخاص بك. إذا قمت بخطأ ما ، فيجب عليك تصحيح بناء الجملة وإلا فلن يتم تجميعه.
ماذا يحدث عند ترجمة التعليمات البرمجية؟
يعتمد تعقيد المترجم على بناء جملة اللغة ومقدار التجريد تلك اللغة البرمجة يوفر. برنامج التحويل البرمجي C أبسط بكثير من برنامج التحويل البرمجي لـ C ++ أو C #.
معجم التحليل
عند التحويل البرمجي ، يقوم المترجم أولاً بقراءة دفق من الأحرف من ملف التعليمات البرمجية المصدر ويقوم بإنشاء دفق من الرموز المعجمية. على سبيل المثال ، كود C ++:
int C = (A * B) +10؛
قد يتم تحليل هذه الرموز المميزة:
- اكتب "كثافة العمليات"
- المتغير "C"
- يساوي
- قوس اليسار
- متغير "أ"
- مرات
- المتغير "B"
- حق
- زائد
- حرفي "10"
التحليل النحوي
ينتقل المخرج المعجمي إلى جزء المحلل النحوي من المترجم ، والذي يستخدم قواعد القواعد النحوية لتقرير ما إذا كانت المدخلات صحيحة أم لا. ما لم المتغيرات تم الإعلان عن A و B مسبقًا وكانا في نطاق ، وقد يقول المترجم:
- 'A': معرف غير معلن.
إذا تم الإعلان عنها ولكن لم تتم تهيئتها. يصدر المحول البرمجي تحذيرًا:
- متغير محلي 'A' يستخدم دون التهيئة.
يجب ألا تتجاهل تحذيرات برنامج التحويل البرمجي. يمكنهم كسر الشفرة بطرق غريبة وغير متوقعة. دائما إصلاح تحذيرات المترجم.
مرور واحد أم اثنان؟
تتم كتابة بعض لغات البرمجة حتى يتمكن المترجم من قراءة شفرة المصدر مرة واحدة فقط وإنشاء رمز الآلة. باسكال هي إحدى هذه اللغات. كثير المجمعين تتطلب مرورين على الأقل. في بعض الأحيان ، يكون بسبب الإعلانات المسبقة المهام أو الطبقات.
في C ++ ، يمكن الإعلان عن فئة ولكن لا يتم تعريفها إلا في وقت لاحق. المحول البرمجي غير قادر على معرفة مقدار الذاكرة التي يحتاجها الفصل حتى يقوم بتجميع نص الفئة. يجب إعادة قراءة التعليمات البرمجية المصدر قبل إنشاء رمز الجهاز الصحيح.
توليد كود الآلة
على افتراض أن المترجم يكمل بنجاح التحليلات المعجمية والنحوية ، فإن المرحلة النهائية هي توليد كود الآلة. هذه عملية معقدة ، خاصة مع وحدات المعالجة المركزية الحديثة.
سرعة المترجمة تنفيذ يجب أن تكون الشفرة في أسرع وقت ممكن ويمكن أن تختلف بشكل كبير وفقًا لجودة الشفرة التي تم إنشاؤها ومقدار التحسين المطلوب.
تتيح لك معظم برامج التحويل البرمجي تحديد مقدار التحسين - المعروف عادةً بتصنيفات التصحيح السريعة والتحسين الكامل للرمز الذي تم إصداره.
رمز الجيل هو التحدي
يواجه كاتب المترجم التحديات عند كتابة منشئ التعليمات البرمجية. العديد من المعالجات تسريع معالجة باستخدام
- خط أنابيب التعليمات
- داخلي مخابئ.
إذا كانت جميع التعليمات داخل رمز عقدة يمكن أن تعقد في وحدة المعالجة المركزية ذاكرة التخزين المؤقت ، ثم يتم تشغيل هذه الحلقة بشكل أسرع من وحدة المعالجة المركزية لجلب التعليمات من ذاكرة الوصول العشوائي الرئيسية. ذاكرة التخزين المؤقت CPU هي كتلة من الذاكرة المضمنة في رقاقة وحدة المعالجة المركزية التي يتم الوصول إليها بشكل أسرع بكثير من البيانات الموجودة في ذاكرة الوصول العشوائي الرئيسية.
مخابئ و قوائم الانتظار
تحتوي معظم وحدات المعالجة المركزية (CPU) على قائمة انتظار مسبقة حيث تقوم وحدة المعالجة المركزية بقراءة الإرشادات في ذاكرة التخزين المؤقت قبل تنفيذها. في حالة حدوث فرع مشروط ، يتعين على وحدة المعالجة المركزية إعادة تحميل قائمة الانتظار. يجب إنشاء الرمز لتقليل هذا.
تحتوي العديد من وحدات المعالجة المركزية (CPU) على أجزاء منفصلة لـ:
- حساب عدد صحيح (أرقام كاملة)
- حساب النقطة العائمة (الأرقام الكسرية)
هذه العمليات يمكن أن تعمل في كثير من الأحيان بالتوازي لزيادة السرعة.
يقوم برنامج التحويل البرمجي عادةً بإنشاء رمز الجهاز في ملفات الكائنات التي تكون بعد ذلك مرتبط معا من خلال برنامج رابط.