Hedef dosyası

Program çalıştırılması
Genel kavramlar
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

Assembler (veya derleyici) tarafından assembly (veya derleme) sonucu oluşan ve makina kodu veya bytecode ile metadata içeren dosyaya hedef dosyası (object file) denir. Üretilmiş olan kod hedef kodudur.

Hedef kodu genelde doğrudan çalıştırılabilir değil, yerdeğiştirebilirdir. Bağlayıcı (linker) hedef kodlarını ve önceden derlenmiş sistem kütüphanelerini birbirine bağlar ve çalıştırılabilir programı oluşturur.

ELF, Mach-O, a.out, COFF gibi çeşitli hedef dosyası formatları mevcuttur. Aynı makina kodu farklı hedef dosyası formatında paketlenebilir. Hedef kodu paylaşılmış kütüphane (shared library) gibi çalışabilir.

Hedef dosyalarının geliştirilmesi, derlenen dillerin ortaya çıkmasıyla başlamıştır. Öncesinde, bilgisayarların oda büyüklüğünde olduğu dönemler, programlama makinaya özgü olan assembly dilinde yapılır ve doğrudan çalıştırılabilir kod oluşturulurdu. Fortran, Cobol gibi dillerin ortaya çıkışı, programcıların programlarını prosedürlerden oluşan kütüphaneler şeklinde düşünmelerine neden olmuştur. Bu durum assembler programının iki farklı zamanda (1. kütüphaneler için, 2. çalıştırılabilir kod için) çalıştırılmasını gerektirmiş, derlenen kütüphane dosyaları hedef dosyalarında tutulmuştur. Bu dosyaları bağlayıp, çalıştırılabilir kodu oluşturan ayrı bir programa ihtiyaç duyulmuş ve buna da linker (bağlayıcı) denmiştir.[1]

Kaynakça

  1. ^ Taylor, Ian Lance. "Linkers part 1". www.airs.com. 9 Mart 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Haziran 2024.