در منابع آموزشی گفته شده کدی که به صورت native نوشته می شه(حالا چه از mfc استفاده کنیم یا مستقیما از api ) توسط کامپایلر به کد hex تبدیل میشه و مستقیما توسط پردازنده اجرا می شه.
همونطور که همه می دونن فایل exe ای که به صورت native کامپایل میشه به کتابخانه های ویندوز مثل :kernel ، gdi ، user (البته اگه اشتباه نگفته باشم) و ... احتیاج داره تا اینجا ددرست !
ووقتی که دستورات اسمبلی که معادلشون به hex در فایل exe ما وجود دارن (اگه اشتباه نگفته باشم) توسط cpu قابل شناسایی و واکشی هستند پس برنامه ما به چه منبعی غیر از cpu احتیاج داره ؟
یک کد hex که یا دستوره یا داده ست یا ترکیبی از هردو ، توسط pc پردازنده شمارش می شه و cpu اجراش میکنه آیا این همون هگزیه که تو exe وجود داره یا توسط سیستم عامل تولید میشه ؟
اگه برنامه مستقیما توسط پردازده اجرا میشه پس دیگه نقش کتابخانه ها این وسط چیه؟
البته من زیاد راجع به ساختار داخلی یک فایل exe چیزی نمی دونم و تو هیچ کتاب برنامه نویسی
هم راجع بهش چیزی ندیم شاید هم دنبالش نرفتم. البته یه نکته ای هم مشخصه که اگه کد hex برنامه ما یعنی برنامه کاربر مستقیما کنترل cpu رو در دست بگیره دیگه سیستم عامل هیچ نقشی نداره و فکر می کنم که این کد hex (قابل اجرا توسط cpu) درون کتابخانه ها ویندوز تعریف شده و سیستم عامل با محدودیت هایی که برای
برنامه قائله (مثل حافظه و ...) اونو تولید می کنه.
میدونم شاید این سوال مربوط به این بخش نباشه ولی هر برنامه ای در نهایت از api های درون کتابخانه های ویندوز استفاده می کنه و برای هربرنامه نویسی مهمه که بدونه این توابع با چه زبانی نوشته شدن(؟!!) و چطور مثلا یک پیکسل در صفحه روشن می شه البته مسلمه که باید به زبان اسمبلی باشه ولی چطور کد hex برنامه ما (که به کتاب خانه های ویندوز وابسته است) توسط cpu (که فقط به خودش وابسته است) اجرا میشه ؟
یه نکته (شاید) خارج از بحث هم بگم : اگه با برنامه نویسی میکروکنترکر ها آشنایی دارین(خودم ندارم) مخصوصا کامپایلر AVR به بالا ، سورس کتابخانه های کامپایلر همراه با کامپایلر وجود داره و یکیشون رو نگاه کردم کاملا به زبان اسمبلیه و حین کامپایل کد C رو به کد hex (با پسوند obj)تبدیل می کنن البته میکرو ها سیستم عامل ندارن و(شاید) برای همینه که باید مستقیما برنامه توسط پردازنده میکرو اجرا بشه . و از اون موقع(وقتی سورس رو نگاه کردم) این سوال برام بوجود اومد که برای کامپیوتر های
دسکتاپ هم همچین چیزی وجود داره یا نه ؟
ببخشید اگه طولانی شد ولی این نکته مبهم(!) شاید تو ذهن اکثر برنامه نویسان (شاید فقط native نویس ها)بوجود بیاد.
باتشکر و درود فراوان بر همه برنامه نویسان ایران زمین ...