*

  • windows platformunda calistirilabilir pe dosyalarinin (exe, dll, sys falan, biz bunlara kisaca imaj diyelim) "tercih edilen baslangic adresi" diye bir parametresi bulunur. image loader adi verilen imaj yukleyici bu dosyalari tercih edilen baslangic adresinden hafizaya oturtmaya (bkz: mapviewoffile) calisir. dosya icindeki relocation hazir bu baslangic adresine gore yapilmis geldiginden oturtma bittiginde kodumuz kullanima hazirdir.

    amma velakin bir tane exe farzi misal iki tane dll yukleyecek olsun. bunlarin da baslangic adresleri tesaduf ki ayni olsun. oyle bir durumda image loader ilkini kendi adresine yuklerken digerini tercih etmedigi bir adrese kaydirmak zorunda kalir. haliyle koca kodu ordan oraya tasiyinca kod icindeki mutlak hafiza referanslari da kaydigindan image loader'in oturup tekrardan relocation yapmasi gerekir.

    iste bu hafiza uzerindeki cakismadan dolayi dll'leri hafiza icinde tasima islemine rebasing denir. calisma performansini olumsuz etkilediginden kacinilmaya calisilan bir vaziyettir.

    eger imajin relocation bilgisi yoksa ve buna ragmen mutlak adres referanslari varsa bu yukleme isleminde hataya sebep olur. uygulama veya uygulamanin yuklemeye calistigi imaj yuklenemez.

    mutlak adres referansi barindirmayan imajlarda ise hicbir soruna yol acmaz windows alir onu oradan oraya firlatir mis gibi.

    (bkz: import address table)
  • git'e ait bir özellik. branchlari esitlemenin merge disindaki diger yolu. merge'de commitler kendi branch'inda kalirken, rebase de hepsi master branch in altina kopyalaniyor. eger master branch'da da bolca commitler varsa proje gecmisini anlamak zor olabilir, master'a dokunmadiysak merge yerine rebase yapmak mantikli olabilir. zaten git'in sitesinde rebase kullanmanin altin kurali olarak "asla public branch'larda yapmayin" diyor.

    feature diye bir branch'imiz olsun, master ile birlestirme kodu asagidaki gibi.

    --- spoiler ---

    git checkout feature
    git rebase master
    --- spoiler ---
hesabın var mı? giriş yap