PDA

View Full Version : کد ماشین یک فایل EXE چطور تولید می شود؟



tooraj_azizi_1035
شنبه 18 دی 1389, 13:51 عصر
سلام،
سوال من این است که وقتی دو CPU از دستورالعمل های متفاوتی پشتیبانی می کنند و دارای برخی دستورات مشترک هم هستند چطور یک فایل EXE روی هر دو اجرا می شود؟
وقتی کامپایلری مثل کامپایلر ++C یک کد ماشین تولید می کند چرا روی ماشین های با Instruction Set های مختلف اجرا می شود؟

vahid1
شنبه 18 دی 1389, 23:59 عصر
البته خودتون جواب رو داديد. كامپايلرها در حالت كلي فقط از دستورات مشترك استفاده مي‌كنند. به عنوان مثال شما نمي‌تونيد برنامه‌اي كه براي 586 كامپايل كرديد رو با استفاده از پردازنده‌ةاي اسپارك sun اجرا كنيد ولي مي‌تونيد آن‌ها را روي دسته بزرگي از پردازنده‌هاي سازگار مانند رده‌هاي مختلف 586 شركت Intel و حتي AMD اجرا كنيد. البته دليلش هم سازگاري كدهاي توليد شده توسط كامپايلر است. اغلب كامپايلرها گزينه‌هائي براي توليد كدهاي خاص و بهينه سازي براي يك پردازنده خاص نيز دارند و در صورتي كه برنامه نويس بخواهد برنامه‌اش را فقط با استفاده از پردازنده مشخصي اجرا كنيد كاربرد دارد.

بعضي كامپايلرها مانند watcom c++ compiler كدهاي ويژه پلاتفرم‌هاي مختلف ايجاد مي‌كنند به عبارت ديگر مي‌توانيد يك برنامه را براي پلاتفرم‌هاي مختلف كامپايل كنيد البته براي هر پلاتفرم فايل اجرائي متناسب آن ايجاد مي‌شود.

همچنين بايد اضافه كرد كه سيستم‌عامل‌ها هم در اين ميان نقش خود را بازي مي‌كنند. استفاده از VM در بسياري از سيستم عامل‌هاي جديد اجازه‌ي اجراي برنامه‌هاي متفاوتي را در اختيار قرار مي‌دهد ساده‌ترين نمونه اجراي برنامه‌هاي DOS در windows است.