Compiler yazmak istiyorum! Nereden başlamalıyım?

Başlatan Elektroemre, 05 Nisan 2012, 00:05:19

Firzen

Alıntı yapılan: Elektroemre - 18 Nisan 2016, 01:35:19
4 yıla yakın olmuş  :)

O dönemde tam anlamı ile işe bodoslama dalıp sıfırdan bir şeyler yazmaya çalışmıştım. Bir çok şey öğrenip çokta keyif almıştım.

Şuanki bakış açımla bir kaç söylecek olursak;
Bu işe ciddi anlamda girişilecek ise önce mevcut metodolojiler incelenmeli.
Sonuçta programlama dillerinin icadından beri temel kurallar oturmuş, standart toollar oluşmuş.
"Compiler compiler" denilen toollar  (derleyici yazmanızı kolaylaştıran derleyiciler) sizi bir çok yükten kurtarıyor. Yacc, bison vb. popüler olanları.

Ben kişisel olarak Coco/R sevdim. http://www.ssw.uni-linz.ac.at/Coco/
Bu tool'a oluşturmak istediğiniz dilin kurallarını içeren bir dosya veriyorsunuz (tabi ekstra detayları var) ve sizin için Lexer ve Parser kısmını otomatik oluşturuyor. Örnekleri arasında "taste" isminde uydurulmuş basit bir dil örneği var. Örnekte kaynak kodları AST (abstract syntax tree) ye dönüştürülüyor.

Bu aşamadan sonra optimizasyon sıkıntı değilse, birden fazla hedef mimariniz yok ise, tek model bir MCU için, basit komutları olan bir dili ayrıştırıp AST'den direkt hedef mimari asm kodlarını üreten basit bir derleyici yazmak en fazla 1 haftanızı alır. Fakat profesyonel bir şey isterseniz iş karmaşıklaşıyor, katman sayısı artmak zorunda ve bu iş aylar sürebilir. Optimizasyon, birden fazla hedef mimari desteklenmesi ve kullanıcının işini kolaylaştıracak dahili kütüphaneler hazırlama, binlerce bug ile baş etme vb ise işi ayrı bir boyuta taşıyor. Pazarlama ve müşteri desteği ise daha da başka bir boyutu.

Hocam bende aynı şekilde sadece tek bir mikrodenetleyici için (16F628 veya 16f84a) bir compiler yapmak istiyorum teorik derslerin çoğunu dinledim hatta LLVM falan diye bir infrastructure ile karşılaştım. Sizin öneriniz nedir ne ile yapmamız nasıl başlamamız gerekiyor? Elinizde hiç örnek var mı acaba?
Kararsız...