اگه معماری پردازنده یکی باشه، مسلما دستورات زبان به صورت یه شکل به زبان ماشین تبدیل میشن. مثلا دستور
if روی هر سه تا سیستم عامل خروجی کد ماشینش برابر هست. اما مساله اینه که فایل های اجرایی هم «فرمت» دارن و
هر سیستم عاملی فرمت مخصوص به خودش رو میخونه فقط. کامپایلر برای هر سیستم عامل کلی کد دیگه به
فایل باینری نهایی اضافه میکنه تا قابل درک باشه برای اون سیستم عامل، و این کدهای اضافی هم برای هر کدوم از
این سیستم عامل ها متفاوت هست. برای همینه که ممکنه یه برنامهی واحد روی همون پردازنده، توی لینوکس یا ویندوز
اجرا نشه...
اگه معماری پردازنده یکی باشه، مسلما دستورات زبان به صورت یه شکل به زبان ماشین تبدیل میشن. مثلا دستور
if روی هر سه تا سیستم عامل خروجی کد ماشینش برابر هست. اما مساله اینه که فایل های اجرایی هم «فرمت» دارن و
هر سیستم عاملی فرمت مخصوص به خودش رو میخونه فقط. کامپایلر برای هر سیستم عامل کلی کد دیگه به
فایل باینری نهایی اضافه میکنه تا قابل درک باشه برای اون سیستم عامل، و این کدهای اضافی هم برای هر کدوم از
این سیستم عامل ها متفاوت هست. برای همینه که ممکنه یه برنامهی واحد روی همون پردازنده، توی لینوکس یا ویندوز
اجرا نشه...
یعنی اگه برای تمام سیستم عامل ها کدش رو قرار بدیم رو همه اجرا می شه؟
اگه مثلا برای لینوکس آرچ کامپایل بشه می شه رو یه سیستم عامل نزدیک به خودش مثلا Arch BSD اجرا بشه؟
(من اطلاعاتم خیلی در باره BSD محدوده اگه تفاوتشون خیلی زیاده عذر می خوام.)