Nesne dosyaları
- C kursu
- Uzman
- Ders 31/47
- 5 dk
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
#include <stdio.h>
// genel sayaç tanımla
// get_counter fonksiyonu yaz
// main'de değeri yazdırÖrnek çözüm
#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
int counter = 42; /* .____ bölümünde */
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 |