Ders Notları

100% Complete (success)
Dikkat !!! Lütfen okuyunuz ...

Öğretim Üyesi (Üyeleri): Arş. Gör. Ahmet Faruk Dursun *

(*) Ders notu girebilmek için, bu alanda kendi isminiz yazıyor olmalı...

  • Bologna verilerinin girilmesi;
    ubys.omu.edu.tr adresinden,
    ÜBYS' de Öğretim Elemanları yetkisi seçilmeli... Öğretim elemanı danışmanlık işlemlerinden yapabilirsiniz...
Yıl: 2024, Dönem: Güz
Ders Kitabı / Malzemesi / Önerilen Kaynaklar

Cooper, K., Torczon, L. 2003; Engineering a Compiler, 1st ed., Morgan Kaufmann, 801 p. Appel, A. W., 2002; Modern Compiler Implementation in Java, 2nd ed., Cambridge University Press, 501 p.

Dersin İçeriği

Kelime Analizi: Kelime token'ları, düzenli ifadeler, sonlu durum makineleri ve kelime çözümleyici üreticilerin kullanımı. Ayrıştırma Yöntemleri: Bağlamdan bağımsız gramerler, öngörücü (top-down) ve LR (bottom-up) ayrıştırma teknikleri, ayrıştırıcı üreteçleri. Soyut Sözdizim Ağaçları: Anlamsal eylemler, soyut sözdizim ağacı (AST) oluşturma, ziyaretçi tasarımı kullanımı. Anlamsal Analiz: Sembol tabloları oluşturma ve tür (tip) denetimi süreçleri. Aktivasyon Kayıtları: Yığın çatıları ve MiniJava derleyicisi bağlamında fonksiyon çağrılarının yönetimi. Arakod Üretimi: Ara gösterimler, ağaç temelli dönüşümler ve bildirim işleme. Temel Bloklar ve Kontrol Akışı: Temel blokların oluşturulması, kontrol akış grafiklerinin çıkarılması, koşullu dallanmaların analizi. Emir (Talimat) Seçimi: Komut seçimi algoritmaları, CISC mimarisiyle ilgili yaklaşımlar ve MiniJava için uygulamalar. Canlılık Analizi: Veri akışı denklemlerinin çözümü ve MiniJava derleyicisinde canlılık analizinin uygulanması. Yazmaç (Register) Tahsisi: Grafik renklendirme yöntemi ile yazmaç atama, sadeleştirme, ergitme ve önrenkli düğümler üzerinden tahsis stratejileri. Kod Üretimi: Derleyici bileşenlerinin tümleşik bir yapıda birleştirilmesi ve son hedef koda dönüştürülmesi.

Dersin Amacı

Kelime analizi, aşağıya ve yukarıya doğru ayrıştırma, soyut sözdizim ağaçlarının oluşturulması, tür denetimi, arakod üretimi, temel blok yapıları ve hedef kod üretimi gibi derleyici tasarım sürecine ait temel aşamaları öğretmektir. Ayrıca, bu aşamaların Java programlama dili kullanılarak JavaCC ve JTB gibi derleyici oluşturma araçlarıyla nasıl uygulanabileceği hakkında bilgi ve beceri kazandırılması hedeflenmektedir.

Haftalık Ders İçeriği

Hafta Teorik Uygulama Laboratuar Ders Notları
1 Derleyicilere ve yorumlayıcılara giriş
2 Kelimesel analiz: düzenli ifadeler ve DFA oluşturma
3 Sözdizim analizi: LL ve LR ayrıştırıcılar
4 Soyut sözdizim ağaçları ve gramer temsili
5 Anlambilimsel analiz ve tür denetimi
6 Aktivasyon kayıtları ve bellek organizasyonu
7 Ara kod oluşturma: üç adresli kod ve ifadeler
8 Temel bloklar ve kontrol akışı grafiği
9 Ara Sınav
10 Komut (emir) seçimi ve CISC mimarileri
11 Canlılık analizi ve veri akışı denklemleri
12 Yazmaç tahsisi: grafik renklendirme yöntemleri
13 Kod üretimi ve tüm bileşenlerin entegrasyonu
14 Veri akış analizi ve optimizasyon fırsatları
16 Dönem Sonu SınavıDöngü düzeyinde optimizasyon teknikleri