Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
Dil Çevrimi Nedir ?

Dil Çevrimi Nedir ?

Paylaşım , Takip İçin

Dil Çevrimi

Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir.

Dil Çevrimi Nedir ?

Yüksek düzeyli bir dilde yazılmış kaynak kodun makine diline (Hedef kod) dönüştürülmesi zorunluluğu Dil çevirici yazılımların oluşturulmasına neden olmuştur.

program gcd(input, output);

var i, j: integer;

begin

  read(i, j);

  while i <> j do

  if i > j then i := i – j;

  else j := j – i;

  writeln(i)

end.

Derleme işlemi yapıldığı zaman ise
Dil Çevrimi Nedir ?
Dil Çevrimi Nedir ?

Source language program-> Translator-> Object language program

  • Dönüşüm için derleme ve yorumlama olmak üzere iki temel yöntem vardır.
  • Bir yorumlayıcı, bir programın her deyimini birer birer makine diline çevirerek çalıştırır.

  • Derleyici, bir programlama dilinde yazılmış bir kaynak kod için o koda eşdeğer olan makine dilinde bir program oluşturur.

Derleme Süreci

Derleme sürecinin başlangıcında derleyiciye verilen yüksek düzeyli bir programlama dili deyimlerini içeren programa, kaynak (source) program, derleme sürecinin sonucunda oluşan makine dilindeki programa ise amaç (object) program adı verilir.

Derleyicinin çalışması sırasında geçen zamana derleme zamanı (compile time) denir.

Hedef programların çalışması sırasında geçen zamana çalışma zamanı (run time) adı verilir.

Dil Çevrimi Nedir ?

Sadeleştirilmiş Derleyici Yapısı

Source code

(Karakter Dizisi)

if (b == 0) a = b;

 

Token dizisi

 

Soyut Sözdizim Ağacı

 

Ara Kod

 

Assembly Kodu

  CMP CX,0

   CMOVZ DX,CX

Metinsel Analiz-Scanner

  • Derleme sürecindeki ilk ve en uzun süren aşamadır.
  • Bir derleyicinin ön ucunda yer alan metinsel çözümleyici (lexical analyzer), bir kaynak programı bir dizi token dizisine çevirir.
  • Regüler ifade aracı kullanır

Ayrıştırma (Parser) yöntemleri

  • Ayrıştırıcı bir sözcük katarının dilin gramer kuralları ile türetilebilirliğini inceler ve sözcük katarına ilişkin bir ayrıştırma ağacı oluşturur
  • İki yol vardır.
  • Yukarıdan-aşağıya (top-down)
  • Aşağıdan-yukarıya (bottom-up)

Sembol Tablosu

  • Derleme sürecinde programdaki her tanımlayıcı için bir eleman içeren sembol tablosu oluşturulur. Sembol tablosu, derleme sürecindeki çeşitli aşamalarda kullanılır ve güncellenir.
  • Bir tanımlayıcı kaynak programda ilk kez bulunduğunda, o tanımlayıcı için sembol tablosunda bir eleman oluşturulur. Aynı tanımlayıcının daha sonraki kullanımları için ilgili token, aynı sembol tablosu elemanına başvuru içerir.
  • Metinsel çözümleme aşamasının sonunda, programdaki token‘lar ve her token‘ın özelliklerinin tutulduğu sembol tablosu elemanına işaret edilen göstergeleri içeren token dizisi oluşturulur.

Anlam Çözümleme

  • Anlam çözümleme, kaynak program için söz dizim çözümleme sırasında oluşturulmuş ayrıştırma ağacı kullanılarak, soyut bir programlama dilinde bir program oluşturulmasıdır.

Soyut Dil

Anlam çözümleme sonucunda üretilen kod için kullanılan ara diller, genel olarak, üst düzeyli bir birleştirici diline benzerler. Bu soyut dil, kaynak dilin veri türleri ve işlemleriyle uyumlu olacak şekilde tasarlanmış, hayali bir makine için bir makine dili olup, derleyicinin kaynak ve amaç dilleri arasında bir ara adım oluşturur.

Kod Oluşturma

  • Soyut dilde ifade edilen kodu alınarak belirli bir bilgisayar için makine kodunu oluşturulur.
  • Derleyicinin ön ucu programlama diline bağımlı, arka ucu ise bilgisayara bağımlıdır.

Eniyileme (Optimizasyon)

  • İsteğe bağlı olarak ara kod kısmında iyileştirmeler yapılabilir.
  • Buradaki çalışma bir programın daha etkin olarak çalışacak bir eşdeğer programa dönüştürülmesi için yapılır.

Taşınabilir Kod

  • Dil çevriminde bütünüyle yorumlama ve bütünüyle derleme yöntemleri, iki uç durumdur. Bazı programlama dilleri, iki yöntemin birleştirilmesi ile gerçekleştirilirler.
  • Bir program, kaynak program üzerinde basit düzenlemeler yapılarak bir sanal makinenin daha sonra yorumlanacak olan makine kodu olarak nitelenebilen bir ara koda çevrilebilir. Bu çözüm, ağırlıklı olarak derlemeye dayanır ve farklı makinelerde çalıştırılabilen taşınabilir kod üretmek amacıyla kullanılabilir.
  • Java dili bu tür dil çevrimini uygulamaktadır. Java programları, Java bytecode‘u adı verilen bir ara koda dönüştürüldükten sonra yorumlanır.
Taşınabilir Kod

Örnek

    read A

    read B

    sum := A + B

    write sum

    write sum / 2

Metinsel Analiz (Lexical Analysis)

  • Tokens:

  id      = letter ( letter | digit ) * [ except “read” and “write” ]

  literal = digit digit *

  “:=”, “+”, “-“, “*”, “/”, “(“, “)“

  $$$ [end of file]

  • EBNF

<pgm>        ->  <statement list> $$$

<stmt list>  ->  <stmt list> <stmt> | E

<stmt>       ->  id := <expr> | read <id> | write <expr>

<expr>       ->  <term> | <expr> <add op> <term>

<term>       ->  <factor | <term> <mult op> <factor

<factor>     ->  ( <expr> ) | id | literal

<add op>     ->  + | –

<mult op>    ->  * | /

Ara Kod Dönüşümü

  • Intermediate code:

    read

    pop A

    read

    pop B

    push A

    push B

    add

    pop sum

    push sum

    write

    push sum

    push 2

    div

    write

  • Target code:

            .data

    A:      .long 0

    B:      .long 0

    sum:    .long 0

            .text

    main:   jsr read

            movl    d0,d1

            movl    d1,A

            jsr read

            movl    d0,d1

            movl    d1,B

            movl    A,d1

Kod üretimi

            movl    B,d2

            addl    d1,d2

            movl    d1,sum

            movl    sum,d1

            movl    d1,d0

            jsr write

            movl    sum,d1

            movl    #2,d2

            divsl   d1,d2

            movl    d1,d0

            jsr write

Programlama dilleri dil çevrimi konusundan öncesi için — Tıklayınız


Paylaşım , Takip İçin
5 1 vote
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: