.bss - .bss

Olarak bilgisayar programlama , blok başlangıç simgesi (Kısaltılmış .bss veya BSS ) bir bölümüdür nesne dosyasının , çalıştırılabilir, ya da montaj dili içeren bir kod statik değişkenleri ayrılmış bildirilen ancak henüz bir değer tayin edilmemiştir. Genellikle "bss bölümü" veya "bss bölümü" olarak adlandırılır.

Tipik olarak yalnızca bss bölümünün uzunluğu, ancak veri yok, nesne dosyasında depolanır . Program yükleyici bss bölümü için ayırdığı bellek o programı yüklediğinde. İlk değer verisi gerektiren .data veya .rodata bölümleri yerine .bss bölümüne değeri olmayan değişkenler yerleştirilerek nesne dosyasının boyutu küçültülür.

Bazı platformlarda, bss bölümünün bir kısmı veya tamamı sıfır olarak başlatılır. Unix benzeri sistemler ve Windows , bss bölümünü sıfıra başlatır ve C ve C++'ın tüm sıfır bitleriyle temsil edilen değerlere statik olarak tahsis edilmiş değişkenlerin bss segmentine yerleştirilmesine izin verir. İşletim sistemleri, bss segmentini verimli bir şekilde uygulamak için talep üzerine sıfır doldurma adı verilen bir teknik kullanabilir. Gömülü yazılımda, bss segmenti , girilmeden önce C çalışma zamanı sistemi tarafından sıfıra başlatılan belleğe eşlenir main(). Bazı C çalışma zamanı sistemleri, bss segmentinin bir kısmının başlatılmamasına izin verebilir; C değişkenleri açıkça bss segmentinin o kısmına yerleştirilmelidir.

Bazı bilgisayar mimarilerinde , uygulama ikili arabirimi "küçük veriler" için bir sbss segmentini de destekler . Tipik olarak, bu veri öğelerine, yalnızca belirli bir adres aralığına erişebilen daha kısa talimatlar kullanılarak erişilebilir. İş parçacığı yerel depolamayı destekleyen mimariler , iş parçacığı yerel olarak işaretlenmiş başlatılmamış, statik veriler için bir tbss bölümü kullanabilir .

Menşei

Bu, metin, çeşitli veriler ve yığın ve yığın bölümleriyle basit bir bilgisayarın program belleğinin tipik düzenini gösterir.

Tarihsel olarak, BSS ( Block Started by Symbol ) UA-SAP'ta (United Aircraft Symbolic Assembly Program) sözde bir işlemdir , 1950'lerin ortalarında Roy Nutt, Walter Ramshaw ve United'daki diğerleri tarafından IBM 704 için geliştirilen birleştiricidir. Uçak Şirketi . BSS anahtar sözcüğü daha sonra , IBM'in 709 ve 7090/94 bilgisayarları için standart birleştiricileri olan FORTRAN Montaj Programına (FAP) ve Makro Montaj Programına (MAP) dahil edildi . Bir etiket (yani sembol) tanımladı ve belirli sayıda kelime için başlatılmamış bir alan bloğu ayırdı . Bu durumda BSS, bir dizi ayrı küçük veri konumunu ayrı ayrı ayırmak yerine bir kestirme yol olarak hizmet etti. Bazı derleyiciler , belirtilen sembolün ayrılmış bloğun sonuna karşılık geldiği Block Ended by Symbol için tamamlayıcı veya alternatif bir BES yönergesini destekler .

C'de BSS

Olarak C , açık bir başlatıcı statik olarak ayrılan nesnelerin (aritmetik tipleri için) sıfır başlangıç ya da (işaretçi türleri için) boş bir işaretçi. C'nin uygulamaları tipik olarak, yalnızca sıfır değerli bitlerden oluşan bir bit deseni kullanan sıfır değerleri ve boş gösterici değerlerini temsil eder (ancak bu, C standardı tarafından gerekli değildir). Bu nedenle, BSS segmenti tipik olarak dosya kapsamında (yani herhangi bir fonksiyonun dışında) bildirilen tüm başlatılmamış nesneleri (hem değişkenler hem de sabitler ) ve ayrıca başlatılmamış statik yerel değişkenleri ( anahtar kelimeyle bildirilen yerel değişkenler ) içerir; statik yerel sabitler , ayrı bir bildirime sahip olmadıklarından ve bu nedenle, örtük veya açık bir şekilde sıfıra başlatılabilmelerine rağmen, tipik olarak BSS bölümünde bulunmadığından bildirimde başlatılmalıdır. Bir uygulama ayrıca, yalnızca sıfır değerli bitlerden oluşan bir değerle başlatılan statik olarak tahsis edilmiş değişkenleri ve sabitleri BSS bölümüne atayabilir. static

Bir C programcısı ve yazarı olan Peter van der Linden , "Bazı insanlar bunu 'Daha İyi Yerden Tasarruf Edin' olarak hatırlamayı sever. BSS segmenti sadece henüz değeri olmayan değişkenleri tuttuğundan, aslında bu değişkenlerin görüntüsünü saklaması gerekmez.BSS'nin çalışma zamanında gerektireceği boyut nesne dosyasına kaydedilir, ancak BSS ( veri segmenti) nesne dosyasında herhangi bir gerçek yer kaplamaz."

Fortran'da BSS

Gelen Fortran ortak blok değişkenleri bu segmentte tahsis edilir. Bazı derleyiciler, 64 bit komut kümeleri için, bu segmente erişen talimatlardaki ofsetleri 32 bit ile sınırlayabilir ve boyutunu 2 GB veya 4 GB ile sınırlayabilir. Ayrıca, Fortran'ın statik verilerin sıfıra başlatılmasını gerektirmediğini unutmayın. bss segmentinin sıfıra başlatıldığı sistemlerde, ortak blok değişkenlerini ve diğer statik verileri bu segmente koymak sıfır olacağını garanti eder, ancak taşınabilirlik için programcılar buna bağlı olmamalıdır.

Ayrıca bakınız

Referanslar