کتاب C و برنامه نویسی compiler optimization با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
دوره جامع C و بهینهسازی کامپایلر: گامی فراتر در دنیای برنامهنویسی رازهای C و بهینهسازی کامپایلر را کشف کنید! دوره جامع C و برنامه نویسی Compiler Optimization معرفی دوره: دریچهای نو به دنیای قدرتمن...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره C و برنامه نویسی compiler optimization
موضوع کلی: برنامه نویسی
موضوع میانی: سی (C)
📋 سرفصلهای دوره
- 1. مقدمهای بر زبان C و تاریخچه آن
- 2. نصب و راهاندازی کامپایلر (GCC, Clang) و محیط توسعه
- 3. ساختار یک برنامه C: تابع main و اولین برنامه
- 4. متغیرها، انواع دادههای پایه (int, char, float, double)
- 5. عملگرهای حسابی، رابطهای و منطقی
- 6. دستورات شرطی: if, else if, else
- 7. دستور شرطی switch-case
- 8. حلقههای تکرار: for, while, do-while
- 9. توابع: تعریف، فراخوانی و بازگشت مقدار
- 10. پارامترهای تابع و انتقال با مقدار (Pass by Value)
- 11. محدوده (Scope) و طول عمر (Lifetime) متغیرها
- 12. آرایههای یک بعدی و چند بعدی
- 13. رشتهها در C (آرایهای از کاراکترها) و توابع کتابخانه string.h
- 14. پیشپردازنده C (#include, #define, #if)
- 15. ورودی و خروجی استاندارد (printf, scanf)
- 16. مقدمهای بر اشارهگرها (Pointers)
- 17. ریاضیات اشارهگرها (Pointer Arithmetic)
- 18. رابطه بین آرایهها و اشارهگرها
- 19. تخصیص حافظه پویا (malloc, calloc, realloc, free)
- 20. اشارهگر به تابع (Function Pointers)
- 21. ساختارها (struct) و تعریف انواع داده سفارشی
- 22. اتحادیهها (union) و فیلدهای بیتی (Bit-fields)
- 23. اشارهگر به ساختار و عملگرهای -> و .
- 24. کلمات کلیدی `const` و `volatile`
- 25. کلمات کلیدی `static` و `extern`
- 26. فایلها و عملیات ورودی/خروجی روی فایل
- 27. مدل حافظه برنامه: Stack, Heap, Data Segment
- 28. خطاهای رایج حافظه: نشت حافظه و اشارهگرهای معلق
- 29. ساخت و استفاده از کتابخانههای استاتیک و داینامیک
- 30. مراحل کامپایل: پیشپردازش، کامپایل، اسمبل، لینک
- 31. آشنایی با زبان اسمبلی (x86/ARM)
- 32. نگاشت ساختارهای C به اسمبلی: متغیرها و عبارات
- 33. نگاشت ساختارهای C به اسمبلی: دستورات کنترلی و حلقهها
- 34. قراردادهای فراخوانی تابع و پشته (Stack Frame)
- 35. بررسی خروجی اسمبلی کامپایلر (گزینه -S)
- 36. معرفی نمایش میانی (Intermediate Representation - IR)
- 37. مفهوم بهینهسازی کامپایلر: اهداف و محدودیتها
- 38. سطوح بهینهسازی کامپایلر (-O0, -O1, -O2, -O3, -Os)
- 39. قانون "As-if" و رفتار تعریفنشده (Undefined Behavior)
- 40. بهینهسازی با هدایت پروفایل (Profile-Guided Optimization - PGO)
- 41. بهینهسازی در زمان لینک (Link-Time Optimization - LTO)
- 42. وابستگی دادهها (Data Dependencies) و تحلیل آن
- 43. گراف جریان کنترل (Control Flow Graph - CFG)
- 44. فرم تخصیص تکی استاتیک (Static Single Assignment - SSA)
- 45. بهینهسازیهای مستقل از ماشین: مقدمه
- 46. حذف کد مرده (Dead Code Elimination)
- 47. انتشار ثابتها (Constant Propagation) و درهمکردن ثابتها (Constant Folding)
- 48. انتشار کپی (Copy Propagation)
- 49. حذف زیرعبارات مشترک (Common Subexpression Elimination)
- 50. کاهش قدرت (Strength Reduction)
- 51. حرکت کد نامتغیر حلقه (Loop-Invariant Code Motion)
- 52. مقدمهای بر بهینهسازی حلقهها
- 53. بازکردن حلقه (Loop Unrolling)
- 54. ادغام و شکستن حلقهها (Loop Fusion and Fission)
- 55. تعویض حلقهها (Loop Interchange)
- 56. درونریزی توابع (Function Inlining)
- 57. بهینهسازی فراخوانی نهایی (Tail Call Optimization)
- 58. تحلیل مستعار (Alias Analysis) و کلمه کلیدی `restrict`
- 59. تخصیص ثباتها (Register Allocation)
- 60. تأثیر چیدمان دادهها بر عملکرد
- 61. همراستاسازی دادهها (Data Alignment) و Padding
- 62. مقدمهای بر معماری کامپیوتر: خط لوله (Pipelining)
- 63. اجرای خارج از ترتیب (Out-of-Order Execution)
- 64. پیشبینی انشعاب (Branch Prediction) و تأثیر آن بر کد
- 65. حرکت شرطی (Conditional Move) به جای انشعاب
- 66. سلسله مراتب حافظه نهان (Cache Hierarchy)
- 67. مکانیابی دادهها (Data Locality): مکانی و زمانی
- 68. نوشتن کدهای دوستدار حافظه نهان (Cache-Friendly Code)
- 69. مشکل اشتراک کاذب (False Sharing) در برنامههای موازی
- 70. مقدمهای بر موازیسازی در سطح دستورالعمل (ILP)
- 71. معماریهای Superscalar و VLIW
- 72. مقدمهای بر SIMD (Single Instruction, Multiple Data)
- 73. برداریسازی خودکار (Auto-Vectorization)
- 74. نحوه نوشتن حلقههای قابل برداریسازی
- 75. استفاده از توابع ذاتی کامپایلر (Compiler Intrinsics) برای SIMD
- 76. بهینهسازیهای بین رویهای (Interprocedural Optimization - IPO)
- 77. توابع خالص (Pure) و ثابت (Const)
- 78. جداول پرش (Jump Tables) برای بهینهسازی دستور switch
- 79. استفاده از ابزارهای پروفایلینگ (gprof, perf)
- 80. تحلیل و تفسیر خروجی پروفایلر
- 81. نحوه اندازهگیری دقیق عملکرد
- 82. بررسی کد ماشین تولید شده (objdump, disassembler)
- 83. استفاده از صفات خاص کامپایلر (__attribute__)
- 84. استفاده از دستورات پراگما (#pragma) برای کنترل بهینهسازی
- 85. موانع حافظه (Memory Barriers/Fences)
- 86. مفهوم Data-Oriented Design
- 87. بهینهسازی ضرب ماتریس: یک مطالعه موردی
- 88. بهینهسازی الگوریتمهای مرتبسازی
- 89. تأثیر بهینهسازی بر اندازه کد اجرایی
- 90. مبادله بین سرعت و اندازه (Space-Time Tradeoff)
- 91. چه زمانی به کامپایلر اعتماد کنیم و چه زمانی به صورت دستی بهینهسازی کنیم
- 92. محدودیتهای بهینهسازی استاتیک
- 93. کامپایلرهای Just-In-Time (JIT) در مقابل Ahead-Of-Time (AOT)
- 94. آینده بهینهسازی کامپایلر و نقش هوش مصنوعی
- 95. جمعبندی مفاهیم کلیدی و بهترین شیوهها
- 96. پروژه نهایی: پروفایل و بهینهسازی یک برنامه واقعی C
- 97. **اشارهگرها و آرایهها در C: مفاهیم پایه، محاسبات اشارهگر و کاربردها**
- 98. **مدیریت حافظه پویا: تخصیص و آزادسازی حافظه با malloc و free، مشکلات رایج و روشهای رفع آنها**
- 99. **ساختارهای دادهای مقدماتی: آرایهها، لیستهای پیوندی و ساختمانها (structs)**
- 100. **مقدمهای بر مفاهیم Optimization: سطوح مختلف Optimization، پروفایلینگ و ابزارهای تحلیل عملکرد**
تگها:
Advanced C#
C Language
C Programming
C#
Compiler
Compiler optimization
Computer Science
Optimization
Performance
Programming
برنامه نویسی
برنامه نویسی C++
بهینه سازی
بهینه سازی کامپایلر
زبان C++
علوم کامپیوتر
عملکرد
کامپایلر
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.