Derleyici - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Derleyici yapısı
    • 1.1 Ön Uç (Front end)
    • 1.2 Arka Uç (Back end)
  • 2 Ayrıca bakınız
  • 3 Dış bağlantılar

Derleyici

  • Afrikaans
  • Aragonés
  • العربية
  • Asturianu
  • Azərbaycanca
  • تۆرکجه
  • Беларуская
  • Беларуская (тарашкевіца)
  • Български
  • বাংলা
  • Brezhoneg
  • Bosanski
  • Català
  • کوردی
  • Čeština
  • Dansk
  • Deutsch
  • Zazaki
  • Ελληνικά
  • English
  • Esperanto
  • Español
  • Eesti
  • Euskara
  • فارسی
  • Suomi
  • Français
  • Gaeilge
  • Galego
  • Hausa
  • עברית
  • हिन्दी
  • Hrvatski
  • Hornjoserbsce
  • Magyar
  • Հայերեն
  • İnterlingua
  • Bahasa Indonesia
  • Ilokano
  • Ido
  • Íslenska
  • İtaliano
  • 日本語
  • ქართული
  • Qaraqalpaqsha
  • Қазақша
  • 한국어
  • Кыргызча
  • Latina
  • Lëtzebuergesch
  • Lingua Franca Nova
  • Lombard
  • Lietuvių
  • Latviešu
  • Олык марий
  • Македонски
  • മലയാളം
  • Монгол
  • Bahasa Melayu
  • Mirandés
  • မြန်မာဘာသာ
  • नेपाली
  • Nederlands
  • Norsk bokmål
  • ਪੰਜਾਬੀ
  • Polski
  • Piemontèis
  • پنجابی
  • Português
  • Runa Simi
  • Română
  • Русский
  • Scots
  • Srpskohrvatski / српскохрватски
  • Simple English
  • Slovenčina
  • Slovenščina
  • Shqip
  • Српски / srpski
  • Svenska
  • Kiswahili
  • தமிழ்
  • తెలుగు
  • Тоҷикӣ
  • ไทย
  • Tagalog
  • Українська
  • اردو
  • Tiếng Việt
  • Winaray
  • 吴语
  • ייִדיש
  • 中文
  • 閩南語 / Bân-lâm-gí
  • 粵語
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Wikimedia Commons
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
(Compile sayfasından yönlendirildi)
Çok dilli, çok hedefli bir derleyici diyagramı
Programın yürütülmesi
Genel kavramlar
  • Kod
  • Dönüştürülme
    • Derleyici
      • Derleme zamanı
    • Optimizing compiler
  • Intermediate representation (IR)
  • Execution
    • Çalıştırma sistemi
      • Runtime
    • Executable
    • Yorumlayıcı
    • Sanal makina
Kod çeşitleri
  • Kaynak kodu
  • Hedef kodu
  • Bytecode
  • Makina kodu
  • Mikrokod
Derleme stratejileri
  • (Zamanın-önünde) (Ahead-of-time) (AOT)
  • Tam-zamanında (Just-in-time) (JIT)
    • Tracing just-in-time(TJIT)
    • Compile and go system
  • Önderleme
  • Transderleme
  • Yenidenderleme
Kaydadeğer çalışmazamanları (runtime)
  • Android Runtime (ART)
  • BEAM (Erlang)
  • Common Language Runtime (CLR) ve Mono
  • CPython and PyPy
  • crt0 (C target-specific initializer)
  • Java sanal makinesi (JVM)
  • LuaJIT
  • Objective-C and Swift's
  • V8 and Node.js
  • Zend Engine (PHP)
Kaydedeğer derleyiciler & araç setleri
  • GNU Compiler Collection (GCC)
  • LLVM and Clang
  • MSVC

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın (executable file) oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

Bilgi işlemde, yürütülebilir dosya doğrudan işlemci tarafından çalıştırılabilecek bir dosyayı ifade eder. Dosya makine kodu ile yazılmış komut seti talimatları bütününden oluşur.

Derleyiciler çalışma prensiplerine göre ayrılır. Bir derleyici, yorumlayıcı ve assembler'de olduğu gibi sözcüksel analiz (lexical analysis) ve ayrıştırma (parsing) aşamalarını gerçekleştirir.

Derleyicilerin ürettiği yürütülebilir dosyalar her zaman platforma özel olarak derlenmiş makine kodlarından oluşmaz, bazen kaynak kod bir ara temsil diline (intermediate representation) derlenir ve bu dil genellikle bytecode'lardan oluşur ve sanal bir makinede çalıştırılır. Ara dillerin bilinen örnekleri Microsoft .NET, Java Sanal Makinesi ve BEAM (Erlang Virtual Machine) şeklindedir. Bu platformlar kendilerine özgü bir ara dil kullanır. Örneğin JVM, Java Bytecode olarak adlandırılan bir ara dil kullanmaktadır. Bu şekilde derlenen diller tam zamanında derleme (Just in Time – JIT) tekniğini kullanır.

İki ana derleyici türü vardır, bunlar: yerel (native) ve çapraz (cross) derleyicilerdir. Yerel derleyiciler üzerinde çalıştığı platforma özgü derleme gerçekleştirir. Yerel bir derleyiciden elde edilecek çıktı yalnızca derleyicinin derleme zamanında yürütüldüğü sisteme yönelik olacaktır (Örn. Yerel bir derleyici ile C kodunun AMD64 mimarisini kullanan Linux çekirdeğinde çalışan bir makinede derlenmesi sonucu AMD64 ve Linux çekirdeğiyle uyumlu makine kodu elde edilmesi). Yerel derleyicilerin platform bağımsız düşünmeleri gerekmediğinden AOT derleme tekniği ile direkt olarak makine koduna derlenirler. Çapraz derleyiciler üzerinde çalıştıkları platformdan bağımsız bir şekilde destekledikleri tüm platformlara özel olarak makine kodu derlemeleri üretebilirler. Buna örnek olarak ARM64 üzerinde çalışan bir derleyicinin I386 için uyumlu makine kodu derlemesi gösterilebilir. Derleyici yalnızca kodu derlemekle ilgilenmez, aynı zamanda derleme zamanında gerekli gördüğü yerlerde kodu optimize edebilir ve daha optimum bir makine kodu üretmek için çabalayabilir. Buna derleyici optimizasyonu denir.

Makine üzerinde bulunan işlemcinin komut setine uygun şekilde derlenen saf makine kodlarının işlemci tarafından doğrudan yürütülebilir olduğundan en saf çalışma performansı bu şekilde derlenen dillerden elde edilebilir. Bu diller zamanından önce (Ahead of Time - AOT) derleme tekniğini kullanır.

Genellikle yürütülebilir dosya elde edilmesi şeklinde tanımlanmasının nedeni ise bir derleyicinin her zaman tam anlamıyla yürütülebilir dosya oluşturmamasından kaynaklanmaktadır.

Derleyicinin kullanılmasındaki amaç genellikle çalışabilir bir yazılım elde etmektir. Kullanıcıların programları kullanırken kolaylık sağlamak amaçlı geliştirilmiştir. Örneğin, şu satırı bir programın kaynak kodunda (programın okunabilir hali) düşünelim:

X = 2 + Y {\displaystyle X=2+Y} {\displaystyle X=2+Y}

Alttaki assembly'de yazılmış satırlar, aynı programın derlenmiş halidir:

 LOAD A [0]   ;; belleğin 0 adresindeki veriyi A yazmacına yükle
 ADD  A BX    ;; A yazmacına BX yazmacının adresinde bulunan veriyi ekle
 STOR A [100] ;; sonucu 100 adresine yaz

Bu örnekte assembly'nin hedefi, programcının anladığı kaynak kodundan işlemcinin anladığı 0 ile 1 den oluşan makine dili kodunu üretmek (LOAD, ADD ve STOR komutları 0001, 0011 ve 0010 olarak yorumlanır)

 0001 01 00 00000000
 0011 01 10 00000010
 0010 01 00 00000100
 ---- -- -- ---------
  |   |  |   |_________bellek adresi
  |   |  |____________işaret   
  |   |______________yazmaç
  |_________________komut

Bir programlama dili genellikle insan tarafından okunabilir yapılardır. Bilgisayarlar komut seti içerisinde yer alan talimatlar dışında herhangi bir komut yorumlama yeteneğine sahip değillerdir. İşlemcilerin mimarisine göre komut seti de farklılık gösterir, bu nedenle derleyicilerin desteklenen her farklı işlemci mimarisi için farklı derleme aşamalarını izlemesi ve farklı makine kodu sonuçları üretmesi gerekir.

Derleyici yapısı

[değiştir | kaynağı değiştir]

Bir derleyicinin yapısı hedef programlama diline göre değişiklik gösterse de genel olarak bir derleyicinin uygulanması (implementation) yaygın şekilde benzer aşamaları takip eder.

Ön Uç (Front end)

[değiştir | kaynağı değiştir]

Bir derleyicinin ön ucu, kaynak kodun analiz edilerek daha kolay bir şekilde anlamlandırılması ve anlamlandırılmadan önce bir takım sözdizimi gibi hataların kontrol edildiği yerdir.

  • Sözcüksel analiz: kaynak kodun incelenerek jeton (token) olarak temsil edilecek şekilde ayrıştırılmasıdır. Tanımlayıcılar, anahtar kelimeler, operatorler ve diğer kaynak kod ögeleri jetonlar haline getirilerek temsil edilir ve program içerisinde ögelerin anlamlandırılmasında kullanılır.

Arka Uç (Back end)

[değiştir | kaynağı değiştir]

Bir derleyicinin arka ucu işlenmiş olan ara temsilden yararlanarak hedef derleme platformuna uygun bir şekilde makine kodu oluşturulduğu yerdir. Birden fazla işlemci mimarisini destekleyen derleyiciler her bir mimari için farklı sonuçlar üreten farklı arka uçlara sahip olabilirler.

  • Kod oluşturma: platforma uygun şekilde makine kodunun oluşturulmasıdır. Makine kodu içerisinde programın algoritmasının gerçekleşmesi gerekli olan talimatların yanı sıra hata ayıklama ve çalışma zamanı için özel olarak ek kodlar bulunabilir.
  • Platforma bağlı optimizasyonlar: derleyici kod ürettiği platforma özel olarak üretilen makine kodu üstünde optimizasyonlar uygulayabilir ve girdi olarak alınan kaynak kodun teorik olarak daha iyi çalışan bir sürümünü elde edebilir.

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  • Bot çekmek
  • Bağlayıcı
  • Yorumlayıcı
  • Sözcüksel analiz
  • Bilgisayar
  • İşlemci
  • Programlama dili
  • Kaynak kod
  • Makine kodu
  • Komut seti

Dış bağlantılar

[değiştir | kaynağı değiştir]

Daha fazla bilgi için:

  • ISBN 0-201-10088-6
  • Introduction and overview of compilation (9-2 and 9-7, 2004) 4 Aralık 2004 tarihinde Wayback Machine sitesinde arşivlendi.
  • g
  • t
  • d
Bilgisayar biliminin alt dalları
Matematiksel temeller
Matematiksel mantık · Kümeler kuramı · Sayı teorisi · Çizge teorisi · Tip teorisi · Kategori teorisi · Sayısal çözümleme · Bilgi teorisi · Kombinatorik · Boole cebiri
Hesaplama teorisi
Otomat teorisi · Hesaplanabilirlik teorisi · Hesaplamalı karmaşıklık teorisi · Kuantum hesaplama teorisi
Algoritmalar ve veri yapıları
Algoritma çözümlemesi · Algoritma tasarımı · Hesaplamalı geometri
Programlama dilleri ve derleyiciler
Ayrıştırıcılar · Yorumlayıcılar · Yordamsal programlama · Nesne yönelimli programlama · Fonksiyonel programlama · Mantık programlama · Programlama paradigmaları
Eşzamanlı, paralel ve dağıtık sistemler
Çoklu işleme · Dağıtımlı hesaplama · Eşzamanlılık denetimi
Yazılım mühendisliği
Gereksinim çözümleme · Yazılım tasarımı · Bilgisayar programlama · Biçimsel yöntemler · Yazılım testi · Yazılım geliştirme süreci
Sistem mimarisi
Bilgisayar mimarisi · Bilgisayar organizasyonu · İşletim sistemi
Telekomünikasyon ve ağ oluşturma
Bilgisayar müziği · Yönlendirme · Örgü topolojisi · Kriptografi
Veritabanları
Veritabanı yönetim sistemleri · İlişkisel veritabanı · SQL · İşlem yürütme · Veritabanı indeksleme · Veri madenciliği · Metadata (Üst veri) · Ana veri (Master data)
Yapay zekâ
Otomatikleştirilmiş muhakeme · Bilgisayarlı dilbilim · Bilgisayarlı görü · Evrimsel hesaplama · Uzman sistemler · Makine öğrenimi · Doğal dil işleme · Robotik
Bilgisayar grafikleri
Görselleştirme · Bilgisayar animasyonu · Görüntü işleme
İnsan-bilgisayar etkileşimi
Bilgisayar erişilebilirliği · Kullanıcı arayüzleri · Giyilebilir hesaplama · Yaygın bilişim · Sanal gerçeklik
Bilimsel hesaplama
Yapay yaşam · Biyoenformatik · Bilişsel bilim · Bilgisayarlı kimya · Hesaplamalı nörobilim · Hesaplamalı fizik · Sayısal algoritmalar · Sembolik matematik
Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir.
Otorite kontrolü Bunu Vikiveri'de düzenleyin
  • BNE: XX532454
  • BNF: cb120631538 (data)
  • GND: 4148248-7
  • LCCN: sh86007588
  • NDL: 01191219
  • NKC: ph316225
  • NLI: 987007531795805171
"https://tr.wikipedia.org/w/index.php?title=Derleyici&oldid=35380066" sayfasından alınmıştır
Kategoriler:
  • Derleyiciler
  • Amerika Birleşik Devletleri icatları
Gizli kategoriler:
  • Webarşiv şablonu wayback bağlantıları
  • BNE tanımlayıcısı olan Vikipedi maddeleri
  • BNF tanımlayıcısı olan Vikipedi maddeleri
  • GND tanımlayıcısı olan Vikipedi maddeleri
  • LCCN tanımlayıcısı olan Vikipedi maddeleri
  • NDL tanımlayıcısı olan Vikipedi maddeleri
  • NKC tanımlayıcısı olan Vikipedi maddeleri
  • NLI tanımlayıcısı olan Vikipedi maddeleri
  • ISBN sihirli bağlantısını kullanan sayfalar
  • Sayfa en son 09.54, 21 Mayıs 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Derleyici
Konu ekle