کامپایلر سی پلاس پلاس اینتل

**کامپایلر سی++ اینتل**، همچنین به عنوان **آی‌سی‌سی** یا **آی‌سی‌ال** شناخته می‌شود**،** گروهی از کامپایلرهای سی و سی پلاس پلاس از اینتل است که برای ویندوز، مک، لینوکس، فری‌بی‌اس‌دی و دستگاه‌های اندروید مبتنی بر اینتل در دسترس است.

## بررسی اجمالی
کامپایلرها کدهای بهینه شده برای معماری آی‌ای-۳۲ و اینتل ۶۴ و کدهای غیربهینه شده برای پردازنده‌های غیر اینتل اما سازگار مانند پردازنده‌های خاص ای‌ام‌دی تولید می‌کنند. نسخه ویژه ای از کامپایلر (۱۱٫۱) برای توسعه برنامه‌های مبتنی بر Linux برای پردازنده‌های (ایتانیوم IA-64 (۲ در دسترس است.

کامپایلر ۱۴٫۰ پشتیبانی از دستگاه‌های اندروید مبتنی بر اینتل و بهینه‌سازی شده و دستورالعمل‌های SSE Family را برای بهبود عملکرد اضافه کرده‌است. نسخه ۱۳٫۰ پشتیبانی از پردازنده زئون فای اینتل را اضافه کرد. این پشتیبانی از بردارسازی خودکار، که می‌تواند دستورالعمل‌های اس‌اس‌ایی۲، اس‌اس‌ایی۳، اس‌اس‌ایی، اس‌اس‌اس‌ئی۳، اس‌اس‌ایی۴، ای‌وی‌ایکس و AVX2 SIMD و نسخه سامانه نهفته برای Intel MMX و MMX 2 را تولید کند، ادامه دارد. استفاده از چنین دستورالعملی از طریق کامپایلر می‌تواند منجر به بهبود عملکرد برنامه در برخی از برنامه‌ها با معماری آی‌ای-۳۲ و اینتل ۶۴ شود، در مقایسه با برنامه‌های ساخته شده با کامپایلرها که از این دستورالعمل‌ها پشتیبانی نمی‌کنند.

کامپایلرهای اینتل از کیلک پلاس پشتیبانی می‌کنند (که در نسخه ۱۹٫۱ حذف شده‌است)، این یک توانایی برای نوشتن کدهای برداری و موازی است که می‌تواند در پردازنده‌های IA-32 و Intel 64 استفاده شود یا می‌تواند در پردازنده‌های زئون فای بارگیری شود. آن‌ها همچنین پشتیبانی از اپن ام‌پی ۴، چند پردازی متقارن، موازی سازی خودکار و پارالایزاسیون خودکار هدایت شده (GAP) را ادامه می‌دهند. با قابلیت افزودنی کلاستر اوپن‌ام‌پی، کامپایلرها همچنین می‌توانند به‌طور خودکار تماس‌های رابط انتقال پیام برای چندپردازشی حافظه توزیع شده از بخشنامه‌های اوپن‌ام‌پی را ایجاد کنند.

اینتل سی++ با ویژوال سی++ در ویندوز سازگار است و در مایکروسافت ویژوال استودیو ادغام می‌شود. در لینوکس و Mac، با GNU Compiler

Collection و زنجیره ابزار گنو سازگار است. کامپایلر سی++ اینتل برای اندروید در ویندوز، OS X یا لینوکس میزبانی می‌شود و با اندروید اِن‌دی‌کی، از جمله جیی‌سی‌سی و اکلیپس(Eclipse IDE) سازگار است. کامپایلرهای اینتل به دلیل عملکردی که می‌توانند با اندازه‌گیری توسط معیارهایی مانند معیارهای SPEC CPU اندازه‌گیری کنند، شناخته شده‌اند.

## بهینه‌سازی‌ها
کامپایلرهای اینتل با استفاده از پردازنده‌هایی که از معماری‌های اینتل پشتیبانی می‌کنند، برای سیستم‌های رایانه ای بهینه می‌شوند. آنها برای به حداقل رساندن غرفه‌ها (stalls) و تولید کدی طراحی شده‌اند که در کمترین تعداد چرخه ممکن اجرا می‌شود. کامپایلر سی++ اینتل از سه تکنیک سطح بالا جداگانه برای بهینه‌سازی برنامه کامپایل شده پشتیبانی می‌کند: ببهینه سازی درون تابع (آی‌پی‌او)، بهینه‌سازی هدایت شده با پروفایل (پی‌جیی‌او) و بهینه‌سازی‌های سطح بالا (اچ‌ال‌او). کامپایلر سی++ اینتل در محصولات Parallel Studio XE همچنین از ابزارها، تکنیک‌ها و پسوند زبانی برای افزودن و حفظ موازی سازی برنامه‌ها در پردازنده‌های IA-32 و Intel 64 پشتیبانی می‌کند و امکان پردازش پردازنده‌های زئون فای اینتل را فراهم می‌کند.

بهینه‌سازی با راهنمای پروفایل به حالت بهینه‌سازی اشاره دارد که در آن کامپایلر قادر است به داده‌های حاصل از اجرای نمونه برنامه از طریق مجموعه ورودی نماینده دسترسی پیدا کند. داده‌ها نشان می‌دهد که کدام مناطق از برنامه با دفعات بیشتری اجرا می‌شوند و کدام مناطق با دفعات کمتری اجرا می‌شوند. همه بهینه‌سازی‌ها از بازخورد هدایت شده توسط پروفایل بهره‌مند می‌شوند چون هنگام تصمیم‌گیری در مورد تدوین، کمتر به روشهای ابتکاری اعتماد دارند.

بهینه‌سازی‌های سطح بالا بهینه‌سازی‌های انجام شده روی نسخه ای از برنامه است که نگاه نزدیک تری به کد منبع دارد. این شامل عوض شدن حلقه، همجوشی حلقه، شکافت حلقه، باز کردن حلقه، پیش تنظیم داده‌ها و موارد دیگر است.

بهینه‌سازی میان فرآیندی، کامپایلرهای معمولی را بهنه سازی می‌کند اما با استفاده از دامنه گسترده‌تر که ممکن است شامل چندین روش، چندین پرونده یا کل برنامه باشد.

دیوید مونیاوکس از کامپایلر اینتل انتقاد کرده‌است که به‌طور پیش فرض، بهینه‌سازی‌های نقطه شناور را اعمال می‌کند که توسط استاندارد سی مجاز نیست و به پرچم‌های خاصی با کامپایلرهای دیگر مانند جی‌سی‌سی نیاز دارند.

## معماری
* IA-32
* x86-64 (اینتل ۶۴ و AMD64)
* پردازنده پردازنده زئون فای اینتل
* IA-64 (ایتانیوم ۲)

## شرح بسته‌بندی
به جز کامپایلر ++Intel Bi-Endian C، کامپایلرهای ++Intel C به صورت مستقل در دسترس نیستند. آنها در مجموعه‌ها موجود هستند:
* Intel Parallel Studio XE برای توسعه برنامه‌های محاسباتی فنی، سازمانی و با کارایی بالا در ویندوز، لینوکس و مک
* Intel System Studio برای توسعه سیستم و نرم‌افزار برنامه برای سامانه نهفته یا دستگاه‌هایی که دارای ویندوز، لینوکس یا اندروید هستند

این مجموعه‌ها شامل ابزارهای ساخت دیگر مانند کتابخانه‌ها و ابزارهایی برای رشته و تجزیه و تحلیل عملکرد هستند.

## تاریخچه از سال ۲۰۰۳

## پرچم و راهنما
مستندات را می‌توان در سایت Intel Documentation Technical Software یافت.

## اشکال زدایی
کامپایلر اینتل اطلاعات اشکال زدایی استاندارد برای اشکال زداهای رایج (مانند DWARF 2 در لینوکس، مشابه gdb و COFF برای ویندوز) را ارائه می‌دهد. پرچم‌هایی که با اطلاعات اشکال زدایی کامپایل می‌شوند Zi/ در ویندوز و -g در لینوکس هستند. اشکال زدایی در ویندوز با استفاده از خطایاب ویژوال استودیو(VS) و در لینوکس با استفاده از gdb انجام می‌شود.

در حالی که کامپایلر اینتل می‌تواند یک خروجی رخ‌نمانگاری سازگار با gprof ایجاد کند، اینتل همچنین یک پروفایل آماری سطح هسته و سیستم را به نام Intel VTune Profiler فراهم می‌کند. VTune را می‌توان از طریق خط فرمان یا از طریق GUI موجود در لینوکس یا ویندوز استفاده کرد. همچنین می‌تواند در ویژوال استودیو در ویندوز یا اکلیپس (Eclipse) در لینوکس ادغام شود). علاوه بر ثبت کننده (پروفایلر) VTune , Intel Advisor نیز وجود دارد که در زمینه بهینه‌سازی برداری، مدل‌سازی بارگیری، طراحی نمودار جریان و ابزارهای طراحی رشته و نمونه سازی تخصص دارد.

اینتل همچنین ابزاری را برای شناسایی خطای حافظه و نخ با نام Intel Inspector XE ارائه می‌دهد. در مورد خطاهای حافظه، به تشخیص نشت حافظه، خرابی حافظه، تخصیص / عدم تخصیص تطابق API و استفاده ناسازگار از API حافظه کمک می‌کند. با توجه به خطاهای نخ (threading)، این امر به شناسایی انواع مختلف داده (heap و stack)، بن‌بست‌ها و خطاهای همگام سازی API کمک می‌کند.

## منابع

رده:کامپایلرهای سی++
رده:کامپایلرهای سی