CodeBlanks Logo Icon CodeBlanks

Özet - Bağlayıcı

Nesne dosyaları, relocation ve ELF'i birleştirerek bir sembol görüntüleyici yazarsın.

Özet - Sembol görüntüleyici

Bu derste nesne dosyaları, relocation ve ELF kavramlarını birleştirerek bir sembol görüntüleyici yazacaksın. Program, üç fonksiyon tanımlar; her birinin adını yazdırır; toplam sayıyı verir; son olarak birini çağırıp sonucu gösterir.

Her fonksiyon bir semboltür: bağlayıcı bunları sembol tablosuna kaydeder. Fonksiyon adlarını yazdırmak, sembol tablosunun içeriğini görüntülemeye benzer. Çağrı ise sembol çözümleme ve relocation mantığını çalışma zamanında gösterir. Bu alıştırma, bağlayıcı konularını tek bir programda birleştirir.

Uygulama Sembol görüntüleyici yaz

Üç fonksiyon tanımla: int add(int a, int b) { return a + b; }, int sub(int a, int b) { return a - b; }, int mul(int a, int b) { return a * b; }. int main(void) yaz; her fonksiyonun adını printf("Sembol: add\n") biçiminde yazdır (üçü için de), sonra printf("Toplam: 3\n") ve printf("Çağrı: %d\n", add(40, 2)) çağır.

Başlangıç kodu

main.c
#include <stdio.h>

// üç fonksiyon tanımla: add, sub, mul
// her birinin adını yazdır
// toplam sayıyı yazdır
// birini çağır ve sonucu yazdır

Örnek çözüm

main.c
#include <stdio.h>

int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int mul(int a, int b) { return a * b; }

int main(void) {
    printf("Sembol: add\n");
    printf("Sembol: sub\n");
    printf("Sembol: mul\n");
    printf("Toplam: 3\n");
    printf("Çağrı: %d\n", add(40, 2));
    return 0;
}

Beklenen çıktı

Sembol: add
Sembol: sub
Sembol: mul
Toplam: 3
Çağrı: 42

Soru ve cevaplar

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

1 Bir sembol görüntüleyici ne gösterir?

  • Yalnızca hata kodları
  • Sadece bellek adresleri
  • Yalnızca derleyici sürümleri
  • Fonksiyon ve değişken adları Doğru cevap

Açıklama: Sembol görüntüleyici, sembol tablosundaki adları listeler.

2 İşlev çağrısını tamamla

Soru
int add(int a, int b) { return a + b; }
int result = add(40, ____);
Cevap
int add(int a, int b) { return a + b; }
int result = add(40, 2);

Açıklama: add(40, 2) = 42 sonucunu verir.

3 Kavramı görevine eşle

Kavram Anlamı
Nesne dosyası Yeniden konumlandırılabilir
Sembol İsim ve adres
Relocation Adres düzeltme
ELF Dosya biçimi

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