Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
3 beğenilme 0 beğenilmeme
528 kez görüntülendi
Kullandığımız derleyiciler yazdığımız kodları makine diline çevirip işlem yapar,doğrusuyla yanlışıyla bildiğim  bu kadar :).

Peki bu derleyiciler,hangi işlemlerden sonra, yazdığımız kod parçalarını işlemci ve diğer üniteler için anlaşılır hale getirir ?.
Veri Bilimi kategorisinde (159 puan) tarafından  | 528 kez görüntülendi
Hocam şuan öyle bir yazıyı farkettim,teşekkür ederim okuyorum..

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap

Her derleyici makina kodu uretmez. Mesela Java derleyicisi soyut bir makina icin kod uretir. Bazi derleyiciler C kodu uretir (ilk haskell derleyicisi C dilinin bir alt kumesini uretiyordu).

Temelde derleyiciler ve yorumlayicilar ayni islemleri yaparlar.

Yazdigimiz kaynak kodu ilk olarak sozcuksel analize (lexing) girer. Bu islem sirasinda programlama dilinde tanimlanmis sozcukler (token,lexeme vb.) bulunur ve isaretlenir.

f(1+2)   ---> Sozcuksel Analiz ----> (ID,f) (Parantez_Ac,( ) (Sayi,1) (Toplama,+) (Sayi,2) (Parantez_Kapa)

Bu Sozcukler dizisi daha sonra dilin grammerine gore ogelerine ayrilir (parsing). Bu noktada kaynak kodunda yazilan ifade dilde sentaks olarak gecerli bir ifade ise elimize bir soyut sentaks agaci (abstract syntax tree) gecer.

 (ID,f) (Parantez_Ac,( ) (Sayi,1) (Toplama,+) (Sayi,2) (Parantez_Kapa)
               
                  |
                  |
               Ogelere Ayirma
                  |
                 \|/

             Fonksiyon_cagir
              |
              |
              +----> f
              |
              |
              +--------------> Fonksiyon Cagir
                                |
                                |
                                +--->Topla
                                |
                                |
                                +---> 1
                                |
                                |
                                +---->2                     

Bu agac uzerinde cesitli optimizasyonlar (agacin sekli degistirilir) yapilir ve/veya yazilan gecerliligi daha fazla kontrol edilebilir (mesela Haskell de bu agac uzerinde tip dogrulamasi yapilir). Yorumlayicilar bu agaci gezerek olarak degerlendirirken, derleyiciler bu soldan saga gezerek "makina" kodunu olustururlar.

Derleyicinin yigin temelli bir dil urettigi kod soyle gorunebilir.

2 1 Topla f Fonksiyon_cagir

 

 

Pythonda yazdigim turkce yigin temelli programlama dilinin C derleyecisini paylasacaktim ama karakter sinirindan paylasamadim.

(1.6k puan) tarafından 
tarafından düzenlendi
20,281 soru
21,819 cevap
73,492 yorum
2,504,717 kullanıcı