.bss
.bssまたはbssとは、静的にアロケートされた変数のうちプログラムの開始時にゼロで初期化されているものを含むデータセグメントに付けられた名前である。多くのコンパイラやリンカがこの名前を使う。bssセクションあるいはbssセグメントということも多い。
Cでは、初期化式なしで静的にアロケートされた変数はゼロ(数値型の場合)かNULLポインタ(ポインタ型の場合)に初期化される。数値のゼロとNULLポインタは一般的なコンパイラではすべてのビットがゼロのビットパターンで表現される(ただしそれがCの標準で要求されているわけではない)。bssセクションは初期化式を持たないグローバル変数とstaticキーワードのついた初期化されていないローカル変数を含む。ゼロからなるビットパターンで初期化される変数をbssセクションに割り当ててもよい。
通常、bssセクションに割り当てられたメモリはプログラムローダーがプログラムをロードするときに初期化する。必要時にゼロで初期化するというテクニックを使ってOSがbssセグメントを効率的に実装してもよい。組込システムでは、main()が実行されるより前にCランタイムシステムがbssセグメントにマップされたメモリ領域をゼロで初期化する。
ある種のABIはsbssセグメント(small bssの意)をサポートしている。このセグメントは、特定のアドレスしかアクセスできない命令を使ったコンパクトなコードからもアクセスできるデータ要素を含む。
BSSはBlock Started by Symbolというアセンブラの疑似命令に由来する。このアセンブラUA-SAPは1950年代にRoy Nutt、Walter Ramshawとその他のUnited Aircraft Corporationの人々によって開発された[要出典]。BSSというキーワードは、IBMの709および7090/94コンピュータのアセンブラFAT(FORTRAN Assembly Program)に導入された。
関連項目 [編集]
参考文献 [編集]
- Stevens, W. Richard (1992). Advanced Programming in the Unix Environment. Addison–Wesley. Section 7.6. ISBN 0-201-56317-7.