miniatura|383x383px|Això mostra la disposició típica de la memòria de programa d'un ordinador simple amb el text, diverses dades i les seccions de pila (stack) i pila (heap). A la programació d'ordinadors, el símbol d'inici de bloc (abreujat a .bss o bss) és la part d'un fitxer objecte, executable o codi de llenguatge ensamblador que conté variables assignades estàticament que es declaren però encara no se'ls ha assignat un valor. Sovint es coneix com a "secció bss" o "segment bss".
Normalment només la longitud de la secció bss, però cap dada, s'emmagatzema al fitxer objecte. El carregador de programes assigna memòria per a la secció bss quan carrega el programa. Si col·loqueu variables sense valor a la secció .bss, en comptes de la secció .data o secció rodata que requereixen dades de valor inicial, es redueix la mida del fitxer objecte.
En algunes plataformes, part o tota la secció bss s'inicialitza a zeros. Els sistemes semblants a Unix i Windows inicialitzen la secció bss a zero, permetent que les variables C i C++ assignades estàticament inicialitzades a valors representats amb tots els bits zero es posin al segment bss. Els sistemes operatius poden utilitzar una tècnica anomenada zero-fill-on-demand per implementar de manera eficient el segment bss. Al programari incrustat, el segment bss s'assigna a la memòria que el sistema de temps d'execució C inicialitza a zero abans que s'introdueixi main(). Alguns sistemes C en temps d'execució poden permetre que part del segment bss no s'inicialitzi; Les variables C s'han de col·locar explícitament en aquesta part del segment bss.
En algunes arquitectures d'ordinadors, la interfície binària de l'aplicació també admet un segment sbss per a "dades petites". Normalment, es pot accedir a aquests elements de dades mitjançant instruccions més breus que només poden accedir a un determinat rang d'adreces. Les arquitectures que admeten l'emmagatzematge local del fil poden utilitzar una secció tbss per a dades estàtiques no inicialitzades marcades com a fil local.
Origen Històricament, BSS (de Block Started by Symbol) és una pseudooperació a UA-SAP (United Aircraft Symbolic Assembly Program), l'assemblador desenvolupat a mitjans dels anys 50 per a l'IBM 704 per Roy Nutt, Walter Ramshaw i altres a United. Corporació Aeronautica. La paraula clau BSS es va incorporar més tard al programa d'assemblatge FORTRAN (FAP) i al programa d'assemblatge macro (MAP), els assembladors estàndard d'IBM per als seus ordinadors 709 i 7090/94. Va definir una etiqueta (és a dir, símbol) i va reservar un bloc d'espai no inicialitzat per a un nombre determinat de paraules. En aquesta situació, BSS va servir com a abreviatura en lloc de reservar individualment diverses ubicacions de dades més petites per separat. Alguns assembladors admeten una directiva complementària o alternativa BES, per a Block Ended by Symbol, on el símbol especificat correspon al final del bloc reservat.
BSS en C A C, els objectes assignats estàticament sense un inicialitzador explícit s'inicien a zero (per als tipus aritmètics) o un punter nul (per als tipus de punter). Les implementacions de C solen representar valors zero i valors de punter nul amb un patró de bits que consisteix únicament en bits de valor zero (malgrat que l'estàndard C no requereix omplir bss amb zero, totes les variables en .bss s'han d'inicialitzar individualment en algun tipus). de zeros segons la secció 6.7.8 de la norma C ISO 9899:1999 o la secció 6.7.9 per a estàndards més nous). Per tant, el segment BSS normalment inclou tots els objectes no inicialitzats (tant variables com constants) declarats a l'àmbit del fitxer (és a dir, fora de qualsevol funció) així com variables locals estàtiques no inicialitzades (variables locals declarades amb la paraula clau static); Les constants locals estàtiques s'han d'inicialitzar en la declaració, però, ja que no tenen una declaració separada i, per tant, normalment no es troben a la secció BSS, encara que es poden inicialitzar implícitament o explícitament a zero. Una implementació també pot assignar variables i constants assignades estàticament inicialitzades amb un valor que consisteix únicament en bits de valor zero a la secció BSS.
Referències
Categoria:Programació