توسعه کامپایلر C از ابتدا - ماژول 1
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- چگونه یک کامپایلر C از صفر بسازید؟
- درک کامل از فریمهای استک و چگونگی تولید زبان اسمبلی برای یک فایل منبع C
- درک کامل تحلیل لکسیکال و تجزیه
- مهارتهای قویتری در زبان اسمبلی کسب خواهید کرد.
- طراحی کامپایلر
پیش نیازهای دوره
- شما باید تجربهی پایهای از زبان اسمبلی داشته باشید.
توضیحات دوره
آیا آمادهاید طراحی کامپایلر و توسعهی کامپایلر را بیاموزید و ثابت کنید که یک برنامهنویس حرفهایاید؟
یاد بگیرید که کامپایلر C خود را از ابتدا بسازید. در این دوره، ما یک کامپایلر توسعه میدهیم که یک زیرمجموعه از زبان برنامهنویسی C را کامپایل میکند. به محض اتمام تمام ماژولهای این دوره، قادر خواهید بود برنامههای C را که از اشارهگرها، ساختارها، unions، آرایهها، توابع، حلقههای for، حلقههای while، حلقههای do while، دستورات if ،switch و غیره استفاده میکنند، کامپایل کنید!
کامپایلر ما همچنین دارای یک سیستم ماکرو پیشپردازشگر است که به شما امکان میدهد فایلهای هدر را شامل کنید و تعاریفی درست مانند هر فایل C دیگری ایجاد کنید.
کامپایلر شما به اندازه کافی پیشرفته است که از کتابخانه استاندارد GCC استفاده کند، بنابراین ما قادر به فراخوانی توابع C از کامپایلر خود خواهیم بود. کامپایلر شما قادر به کامپایل زبان برنامهنویسی C خواهد بود.
این دوره به هیچ فریمی متکی نیست و ما همه چیز را از صفر انجام میدهیم تا بهترین تجربهی یادگیری ممکن برای دانشآموزان فراهم شود.
ماژول 1
در ماژول 1 این دوره، ما فایل منبع C خود را که میخواهیم کامپایل کنیم، در حافظه بارگذاری میکنیم. ما یک lexer ایجاد میکنیم تا تحلیل لکسیکال را روی ورودی منبع انجام دهد که کد منبع را به تعدادی توکن تبدیل میکند که کامپایلر ما میتواند به راحتی آن را درک کند. سپس توکنها را از طریق یک تجزیهکننده عبور میدهیم تا یک درخت نحوی انتزاعی (AST) تولید کنیم.
AST برنامه C را به شکلی منطقی توصیف میکند که درک آن را برای کامپایلر ما آسانتر میکند. به عنوان مثال، برای عبارت 50 + 20، شما در انتها یک نود عبارت ریشه خواهید داشت که یک عملگر چپ آن، نودی با مقدار 50 و یک عملگر راست آن، نودی با مقدار 20 دارد. اینگونه شکستن مسائل باعث میشود تا ایجاد کامپایلرها بسیار آسانتر شود.
در تمام سلسلهمراتب این دوره، شما یاد خواهید گرفت که یک کامپایلر C کاملاً کارکردی را ایجاد کنید.
این دوره برای چه کسانی مناسب است؟
- افرادی که به طراحی کامپایلر علاقمند هستند.
- افرادی که به زبان اسمبلی علاقمند هستند.
- افرادی که به زبان برنامهنویسی C علاقمند هستند.
توسعه کامپایلر C از ابتدا - ماژول 1
-
مقدمه 02:21
-
مروری بر دوره 08:44
-
نصب و راهاندازی 01:22
-
آمادهسازی پروژه ما 26:32
-
تحلیل لکسیکال چیست؟ 06:51
-
ایجاد ساختارهای توکن ما 06:38
-
آمادهسازی Lexerما 19:08
-
ساخت یک توکن عددی 27:24
-
ساخت یک توکن رشته 04:46
-
ساخت یک توکن عملگر 28:06
-
ساخت یک توکن علامت 04:45
-
ساخت یک توکن شناسایی 05:10
-
ساخت یک توکن کلیدواژه 05:50
-
ساخت یک توکن خط جدید 01:18
-
ساخت یک توکن کامنت 07:18
-
مدیریت نقلقولها در Lexer 05:35
-
پیادهسازی اعداد هگزادسیمال 08:50
-
پیادهسازی اعداد باینری 04:08
-
مدیریت با بافر پرانتزها 05:52
-
ایجاد توکنها خارج از فایل ورودی 05:41
-
ساخت انواع عدد 03:21
-
پایاندادن به Lexer 00:51
-
تجزیه چیست؟ 05:01
-
ایجاد ساختارهای تجزیهکننده ما 06:05
-
نوشتن الگوی تجزیهکننده ما 06:04
-
ایجاد فایل نود ما 07:59
-
ساخت اولین نود ما 14:19
-
ساخت یک نود عبارت 22:02
-
مدیریت اولویت در عبارات - بخش 1 12:27
-
مدیریت اولویت در عبارات - بخش 2 21:19
-
مدیریت اولویت در عبارات - بخش 3 02:42
-
ساخت یک identifier node 01:44
-
پیاده سازی انواع داده و کلیدواژه - بخش 1 17:23
-
پیاده سازی انواع داده و کلیدواژه - بخش 2 17:59
-
پیاده سازی انواع داده و کلیدواژه - بخش 3 16:56
-
پیاده سازی انواع داده و کلیدواژه - بخش 4 07:55
-
درک scopes 06:41
-
پیادهسازی scopes 21:21
-
درک Symbol Resolution 03:18
-
پیادهسازی Symbol Resolution 17:37
-
پیادهسازی انواع داده و کلیدواژهها - بخش 5 04:43
-
پیادهسازی متغیرها بخش 1 16:56
-
پیادهسازی متغیرها بخش 2 08:46
-
پیادهسازی متغیرها بخش 3 21:00
-
درک اعلان های آرایه 03:51
-
پیادهسازی محاسبه اندازه آرایهها 05:26
-
پیادهسازی ساختارها - بخش 1 10:34
-
پیادهسازی ساختارها - بخش 2 01:38
-
پیادهسازی بدنه - بخش 1 19:28
-
padding و alignment چیست؟ 04:27
-
پیادهسازی توابع اندازه نوع داده 06:51
-
پیادهسازی توابع با اندازه متغیر 05:16
-
پیادهسازی توابع Padding و Alignment 14:01
-
پیادهسازی بدنه - بخش 2 12:28
-
پیادهسازی بدنه - بخش 3 08:25
-
توضیح offsets دامنه 11:34
-
پیادهسازی انتیتی ها و قابلیتهای scope تجزیهکننده 04:16
-
پیادهسازی offset های scope نود متغیر - بخش 1 16:59
-
پیادهسازی offset های scope نود متغیر - بخش 2 02:34
-
پیادهسازی offset های scope نود متغیر - بخش 3 07:07
-
فشردن متغیرها به دامنه 01:35
-
پیادهسازی بدنه - بخش 4 15:13
-
پیادهسازی بدنه - بخش 5 05:39
-
پیادهسازی ساختارها - بخش 3 17:46
-
پیادهسازی ساختارها - بخش 4 08:41
-
مقداردهی اولیه به symbol resolver ما 01:25
-
تست عملکرد ساختارهای ما 02:33
-
بررسی ارور ساختارهای ما 04:17
-
پاکسازی پروژه 02:30
-
درک توابع 07:32
-
پیادهسازی ساختارهای تابع 04:54
-
تجزیه توابع 23:00
-
تجزیه آرگومانهای تابع 09:15
-
مدیریت با استکهای رو به بالا 03:34
-
تغییر تجزیه شناسهها 00:35
-
Res = 0 گم شده است 01:00
-
پیادهسازی پرانتزهای عبارات 14:30
-
پیادهسازی دستورات IF 09:49
-
پیادهسازی Else و Else If 06:30
-
رفع برخی از هشدارهای کامپایلر 01:37
-
پیادهسازی دستور return 04:17
-
پیادهسازی حلقههای for 11:01
-
پیادهسازی حلقههای while 04:09
-
پیادهسازی حلقههای Do While 03:26
-
پیادهسازی دستورات switch 13:23
-
پیادهسازی continue و break 03:35
-
پیادهسازی برچسبها 05:16
-
پیادهسازی goto 03:43
-
پیادهسازی switch cases 04:26
-
پیادهسازی tenaries 04:56
-
پیادهسازی کاماها 01:59
-
پیادهسازی براکتهای آرایه 03:16
-
پیادهسازی cast ها 05:59
-
شاخصهای case یا تابع case ثبت ما 00:52
-
درک تصحیحات 04:29
-
ایجاد عملکرد اصلی تصحیح ما 14:08
-
ادغام عملکرد تصحیح ما در تجزیهکننده 07:07
-
تجزیه اعلان های forward 02:03
-
تجزیه unions 08:23
-
تنظیم اندازه استک تابع 00:59
-
سازماندهی مجدد اضافی نودها 19:51
-
آزمون None
-
درس اضافی 02:49
مشخصات آموزش
توسعه کامپایلر C از ابتدا - ماژول 1
- تاریخ به روز رسانی: 1404/06/21
- سطح دوره:همه سطوح
- تعداد درس:103
- مدت زمان :14:17:45
- حجم :10.54GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy