Sorunuzu yanıtlamak için en iyi kitap muhtemelen şu olabilir: Cooper ve Torczon, "Engineering a Compiler", 2003. Bir üniversite kütüphanesine erişiminiz varsa, bir kopyasını ödünç almanız gerekir.
O(n2)n
O(n)O(n)
O(n)O(1)O(s)s
Ardından, ayrıştırma ağacı tipik olarak bir kontrol akış grafiğine "yassılaştırılır". Kontrol akış grafiğinin düğümleri 3 adresli talimatlar (bir RISC montaj diline benzer) olabilir ve kontrol akış grafiğinin boyutu tipik olarak ayrıştırma ağacının boyutunda doğrusal olacaktır.
O(d)dO(n)n
Daha gelişmiş optimizasyonlar için daha karmaşık analizler yapmak isteyebilirsiniz. Bu noktada travmalara çarpmaya başlarsınız. Analiz algoritmalarınızın değerinden çok daha az sürmesini istiyorsunuz.O(n2)tüm programın akış grafiğinin büyüklüğünde bir zamandır, ancak bunun kanıtlanması pahalı olabilecek bilgi olmadan (ve program iyileştirme dönüşümlerini) yapmanız gerekir. Bunun klasik bir örneği, takma ad analizidir; bazı bellek yazıları için, iki yazının aynı bellek yerini asla hedefleyemediğini kanıtlamak istersiniz. (Bir talimatı diğerinin üzerine getirip getiremediğinizi anlamak için bir takma ad analizi yapmak isteyebilirsiniz.) programda (ve böylece kontrol akış grafiğindeki düğüm sayısında üstel.)
Sonra kayıt tahsisine geçersiniz. Kayıt tahsisi, bir grafik renklendirme sorunu olarak ifade edilebilir ve bir grafiğin en az sayıda renkle renklendirilmesinin NP-Hard olduğu bilinmektedir. Bu nedenle çoğu derleyici, makul zaman sınırları içerisinde kayıt dökülme sayısını mümkün olan en iyi şekilde azaltmak amacıyla kayıt dökülmeleriyle birlikte bir çeşit açgözlü buluşsal yöntem kullanmaktadır.
Sonunda kod üretmeye başladın. Kod oluşturma, genellikle, temel bir bloğun , tek girişli ve tek çıkışlı bir dizi doğrusal olarak bağlanmış kontrol akış grafiği düğümü olduğu bir zamanda maksimum bir temel blok yapılır. Bu, ele almaya çalıştığınız grafiğin, temel bloktaki 3-adresli talimatlar grubunun bağımlılık grafiği olduğu ve mevcut makineyi temsil eden bir grafik seti ile kapsamaya çalıştığınız bir problemi kapsayan bir grafik olarak yeniden düzenlenebilir. Talimatlar. Bu problem, en büyük temel bloğun boyutunda (prensipte tüm programın büyüklüğü ile aynı sırada olabilen) büyüktür, bu yüzden bu, tipik olarak, muhtemel kaplamaların sadece küçük bir alt kümesinin olduğu sezgisel tarama ile yapılır. incelemiştir.