CodeBlanks Logo Icon CodeBlanks

Nesne dosyaları

Nesne dosyaları (.o) yapısını öğrenirsin.

Nesne dosyası nedir?

Nesne dosyası (.o), derleyicinin bir kaynak dosyadan ürettiği yeniden konumlandırılabilir makine kodudur. Henüz çalıştırılabilir değildir; bağlayıcı (linker) birkaç nesne dosyasını birleştirip çalıştırılabilir dosyayı oluşturur.

Bir nesne dosyası üç ana bölüm içerir: .text (makine komutları), .data (başlatılmış genel değişkenler) ve .bss (başlatılmamış genel değişkenler). Her bölüm göreli adreslerle yazılır; bağlayıcı son adresleri daha sonra belirler. Nesne dosyası ayrıca sembol tablosu ve relocation girdilerini de içerir; bu bilgiler bağlayıcının işini yapmasını sağlar.

Nesne dosyası bölümleri

Bir nesne dosyasının bölümleri (sections) farklı içerik türlerini tutar. .text bölümü, makine komutlarını içerir; bu bölüm genellikle salt okunurdur. .data bölümü, başlatılmış genel değişkenleri tutar; örneğin int counter = 42; buraya gider.

.bss bölümü, başlatılmamış veya sıfırla başlatılmış değişkenleri tutar; örneğin int total;. BSS, dosyada yer kaplamaz; yalnızca boyut kaydedilir. Bu ayrım, bağlayıcının ve yükleyicinin her bölümü doğru bellek bölgesine yerleştirmesini sağlar. Bölümler, ELF gibi dosya biçimlerinde standartlaştırılmıştır.

Uygulama Nesne dosyası simülasyonu

int counter = 42; genel değişkenini tanımla (bu .data'ya gider). int get_counter(void) fonksiyonu yaz; counter'ı döndürsün (bu .text'e gider). int main(void) yaz ve printf("Sayaç: %d\n", get_counter()) ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// genel sayaç tanımla
// get_counter fonksiyonu yaz
// main'de değeri yazdır

Örnek çözüm

main.c
#include <stdio.h>

int counter = 42;

int get_counter(void) {
    return counter;
}

int main(void) {
    printf("Sayaç: %d\n", get_counter());
    return 0;
}

Beklenen çıktı

Sayaç: 42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir .o dosyası ne içerir?

  • Yalnızca kaynak kod
  • Çalıştırılabilir ikili
  • Yeniden konumlandırılabilir makine kodu Doğru cevap
  • Sadece düz metin

Açıklama: .o dosyası, bağlayıcının birleştireceği yeniden konumlandırılabilir koddur.

2 Bölüm adını tamamla

Soru
int counter = 42;  /* .____ bölümünde */
Cevap
int counter = 42;  /* .data bölümünde */

Açıklama: Başlatılmış genel değişkenler .data bölümüne gider.

3 Bölümü içeriğine eşle

Kavram Anlamı
text Makine komutları
data Başlatılmış veri
bss Başlatılmamış veri
rodata Salt okunur sabit

Uzman bölümündeki tüm dersler