سؤال

وكنت أقرأ نحو NTVDM.EXE وأنا بناء التطبيق وحدة اختبار سريع وتحطمت على جهاز أصدقاء يشكون من هذا EXE.

وكما فهمت كل شيء كمد النوافذ DOS (وتشمل التطبيقات C # وحدة) تشغيل كما 16BIT لا 32BIT و.

هل هذا صحيح؟ يعني كل هذا أعمالي والتطبيق حدة التحكم مرة أخرى التطبيقات المكتبية تشغيل كما 16bit وبدلا من جعل معظم 32BIT والمتاحة؟

وماذا عن الخدمات ويندوز؟ وأعتقد كتبنا بأنها التطبيق وحدة التحكم ثم جعلها تعمل كخدمة النوافذ؟

والشكر

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

المحلول

وأي برنامج NET التي يتم ترجمة ل x86 ستكون 32 بت

وC # تطبيقات وحدة التحكم لا تعمل في دوس "حقيقية" - أنها تعمل في بيئة 32 بت أو 64 بت - اعتمادا على نظام التشغيل الخاص بك وصافي الإطار

نصائح أخرى

<اقتباس فقرة>   

وكما فهمت كل شيء كمد النوافذ DOS   (شملت C # تطبيقات وحدة) ترشيح نفسه   16BIT لا 32BIT و.

     

هل هذا صحيح؟

لا، ليس على الإطلاق.

ويمكنك تشغيل تطبيقات DOS ضمن Windows، وهم 16 بت، ولكن الحقيقة أنها تبدو مثل وحدة التحكم قليلا هو الى حد كبير مجرد صدفة.

ولا توجد تطبيقات .NET 16 بت، وإذا كان التطبيق هو وضع وحدة التحكم أو لا يوجد فرق بين ما إذا كان هو 16 أو 32 بت.

وMS-DOS تشغيل التطبيقات كما تطبيقات 16 بت تحت NTVDM.

و"وحدة التحكم ويندوز" تطبيقات ليست التطبيقات DOS، وتشغيل عملية ويندوز الأصلية (حيث قليلا في رأس PE من ملف EXE يحدد بأنها تطبيق وحدة التحكم، بحيث يمكن ل Windows إنشاء / الإعدادية وحدة التحكم ويندوز ل تطبيق إذا كان أحد غير موجود مسبقا، على سبيل المثال تشغيل تطبيق وحدة التحكم الخاصة بك من CMD أو بوويرشيل وإعادة استخدام إطار وحدة التحكم التي تم إنشاؤها بالفعل، في حين نقرا مزدوجا فوق EXE في مستكشف سيتم إنشاء إطار وحدة تحكم جديدة لتطبيق.)

وCMD! = DOS

وحدة التحكم ويندوز! = DOS

وبالمثل، هناك API وحدة التحكم ويندوز الكامل الذي كان حاضرا في ويندوز منذ ما لا يقل عن ويندوز 2000 (NT5) إذا لم يكن قبل ذلك (وإن كان من المحتمل NT3 / 4 فقط).

ووالتطبيق وحدة التحكم .NET. (أو أي برنامج. NET الأخرى) سيتم تشغيل كما مهما الأجهزة وJIT'ed لغير المستهدفة. لذا ل x86 سيكون 32 بت.

<اقتباس فقرة>   

وكما فهمت كل شيء كمد النوافذ DOS (وتشمل التطبيقات C # وحدة) تشغيل كما 16BIT لا 32BIT و.

وأنت مخطئ. كل CMD.EXE ويندوز هي 32 أو 64 بت، وهذا يتوقف على الهندسة المعمارية.

وتوفي DOS مع Windows ME منذ ما يقرب من عقد من الزمان.

وأنا لا أعرف عن أي تنفيذ. NET VM التي هي قادرة على تشغيل في وضع 16 بت. وقت التشغيل مايكروسوفت دوت نت ومونو على حد سواء 32/64 بت فقط. أنا لا أعرف عن بعضها الآخر أصغر، ولكن سأكون مندهشا إذا كان بإمكانهم العمل في وضع 16 بت.

وبالإضافة إلى ذلك، تدير cmd.exe في وضع 32 بت CMD.EXE هو برنامج ويندوز 32-بت. من ناحية أخرى، يعمل command.com في وضع 16 بت.

والواقع، تطبيقات وحدة هي أبعد ما تكون عن كونها بطبيعتها 16 بت. هذا هو ببساطة ليس صحيحا، لم يكن صحيحا حتى قبل ويندوز، ووضع باعتبارها محمية إلى x86 هو 32 بت، لذلك أي لعبة أو تطبيق لDOS يعمل في وضع portected هي 32-بت.

في .NET، نوع من واجهة المستخدم (UI أو عدم وجود كما هو الحال في خدمات Windows) لا يؤثر على طول كلمة من التطبيق. افتراضيا، الثنائيات. NET هي منصة مستقلة، والحصول على تنفيذها كما تطبيقات 32-بت أو 64 بت حسب نوع برنامج .NET Framework، نواة، وما إلى ذلك من الجهاز المضيف. على الرغم من أنها يمكن جمعها مباشرة إلى 64 بت أيضا.

وليس هناك شيء خاص حول إكس حدة. انها مجرد ملف PE. ذلك بغض النظر عن وحدة مقابل winform إكس مقابل خدمة ويندوز، فإنه مجرد الذهاب الى تشغيل في أي وضع كان التحويل البرمجي.

والبصرية ستوديو غيرها سوف تولد أبدا إكس 16 بت. إلى x86 إلى x64 مقابل هو ؛-p أكثر إثارة للاهتمام

وربما لا يكون صديقك إطار .NET تثبيت (أو ليس لديها سوى 1.1).

وحتى في ظل DOS، ".EXE" يمكن أن يكون 16-بت أو 32 بت (مع الترميز المناسب أو مكتبة الموسع DOS).

وNTVDM.EXE غير المحاكي DOS التي تدعم تشغيل .COM و.EXE الملفات 16-بت في بيئة حيث أنها يمكن أن تحمل وحدة المعالجة المركزية و16 بت والتي هي استدعاءات النظام DOS المتاحة. في الجمعية الوحيدة مع المطالبات القيادة هي أن برامج DOS وضع النص استخدام إطار وحدة التحكم لتزويد مضاهاة شاشة VGA في وضع النص.

وكما لاحظت، لا يوجد صافي VM المتاحة التي يمكن أن تعمل تحت DOS. ومع ذلك، فإنه قد متعة لنبدأ من مصادر مشروع مونو وبناء واحد أن يعمل تحت فري ... فقط لتخويف أصدقائك، -)

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