View Full Version : سوال: خروجی کامپایلر (برای ساخت سیستم عامل)
jeson_park
سه شنبه 11 مرداد 1390, 19:14 عصر
با سلام
کامپایلر تحت ویندوز خروجیشون exe هست
تحت لینوکس هم .a و یا elf (http://en.wikipedia.org/wiki/Executable_and_Linkable_Format)
حالا می خواستم بدونم کامپایلر هایی که برای کامپایل کردن سورس سیستم عامل ازشون استفاده می شه بعد از کامپایل کردن چه خروجی تولید می کنن
ممنون میشم اگه توضیح بدین و منبع برای مطالعه معرفی کنید
BOB
پنج شنبه 13 مرداد 1390, 13:10 عصر
سلام
خروجی هیچ کامپایلری فایل exe نیست. فایل exe بعد از عملیات Link و الحاق آبجتها بوجود میآید. اینها را ببین:
brief-view-of-executable-linking (http://blog.mshams.ir/2010/02/brief-view-of-executable-linking.html)
static-linking (http://blog.mshams.ir/2010/03/static-linking.html)
dynamic-linking (http://blog.mshams.ir/2010/03/dynamic-linking.html)
تنها عمل کامپایلی که تا حدودی با بقیه متفاوت است، عمل کامپایل خود کامپایلر (با خودش) است که به روش bootstrap انجام میشود. در بقیه موارد فرقی نمیکند برنامه عادی باشد یا بخشی از سیستم عامل.
jeson_park
سه شنبه 18 مرداد 1390, 06:46 صبح
با تشکر
ببنید من می گم وقتی یه سیستم عامل (فرضا هسته لینوکس )رو کامپایل میکنیم خروجی کامپایلر چیه؟؟(exe که نیست!)
IamOverlord
یک شنبه 30 مرداد 1390, 16:20 عصر
سلام دوست عزیز،
من هم یه زمانی این جور ابهامات رو داشتم، برای حل این مشکل باید در مورد طرز کار CPU و معماری کامپیوتر و ساختار فایل های اجرایی مطلب بخونید. ولی به طور خلاصه بگم که خروجی کامپایلر برای ساخت سیستم عامل باید یه سری داده ی Binary بدون قالب خاصی باشه (یعنی بدون Format خاصی ولی معمولا یه Format ای همراهش هست مثل bin.). یعنی باید معادل دستورات Assembly در زبان Machine باشه که CPU اونو بفهمه، حتی اگه در زبان سطح بالاتری مثل C هم سیستم عاملتون رو بنویسید باز هم فابل خروجی یه سری داده ی Binary هست که معادل دستورات Assembly هستند. به این دستورات Machine که پشت سر هم Load می شن در حافظه و توسط CPU اجرا می شن، می گن OpCode که هر پردازنده ای OpCode های خودش رو داره. ضمنا دستوراتی که به CPU می دید که اجرا کنه در دو حالت Real Mode و Protected Mode نوشته می شن، دستورات Real Mode شانزده بیتی هستند و این حالت خیلی شبیه به حالت DOS هست، ولی شما از این حالت می تونید در Switch کنید به حالت Protected Mode که الان Windows در اون حالت هست و این حالت 32 بیتی هست که خیلی مزیت ها نسبت به حالت قبلی داره و این سیستم عامل پر از گل و سنبل که الان می بینید به لطف Protected Mode هست. شما وقتی در زبان برنامه نویسیتون چه Assembly و چه C کدتون رو می نویسید برای سیستم عامل نباید از هیچگونه تابع API و دستوراتی که به سیستم عامل فرمانی را می دهند استفاده کنید. پس باید چه کار کنید؟ باید از دستورات In و Out و ارتباط با Port های سخت افزار استفاده کنید تا بتونید با Monitor کار کنید یا چیزی رو Print بگیرید یا آهنگ پخش کنید.
در کل ابهامی بود بگید، شاید زیاد خوب توضیح نداده باشم چون یه مقدار زیاد تر از این حرف هاست ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.