هل من المضلل أن نقول أن التعليمات البرمجية الوسيطة تعمل في جهاز افتراضي

StackOverflow https://stackoverflow.com/questions/3193609

سؤال

إذا كنت محقًا في فهم ما قرأته جهازًا افتراضيًا ، فهو برنامج مترجم للرمز الوسيط. لكن لا يُقال أبدًا أن دلفي (كمثال على الكود غير المُدار) يعمل في برنامج التحويل البرمجي. هل سيكون أقل إرباكًا فقط لوصف الجهاز الظاهري كمترجم؟

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

المحلول

يوجد برنامج التحويل البرمجي يترجم رمز المصدر إلى رمز VM (BYTECODE) ، ومترجم JIT لرمز VM -> رمز الجهاز. VM هو المعيار الذي يستهدف رمز المصدر -> أهداف برنامج التحويل البرمجي VM ، وليس بالضرورة التنفيذ المحدد. يمكن تنفيذها باستخدام آلة حقيقية ، وفي هذه الحالة لن تحتاج إلى إجراء تجميع JIT.

يكون VM أقرب إلى المحاكي (أو إذا كان Jit الخاص بك غبيًا حقًا ، فترثر مترجم :))

نصائح أخرى

يقوم برنامج التحويل البرمجي التقليدي بتحويل لمرة واحدة من رمز المصدر إلى رمز الكائن. يستخدم جهاز افتراضي مثل JVM مزيجًا من التفسير (من رمز bytecons) و المترجم في الوقت المناسب هذا يجمع شرائح من رمز bytecode إلى الكود الأصلي. إنه ليس دقيقًا لوصف VM بشكل عام كمترجم.

أعتقد أن ما يحاول الناس التقاطه مع المصطلحات هو أن هناك طبقة إضافية من التجريد مع الأجهزة الافتراضية. لذلك ، نفس الرمز ، لكن VM لكل منصة يسمح لها بالعمل على هذا النظام الأساسي المحدد.

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