[OSASK 6138] Re: bssセクション

  こんにちは、川合です。


I.Tak. さんは 2003/05/14 13:01:10 の「[OSASK 6137] bssセクション
」で書きました:

> go0009wのnaskやobj2bim3で大きな (8MBくらいの) BSSセクションを
>使おうとすると [TERM_BUF] とか ページ例外 とか出して止まっちゃう
>んですけど、まさかBSSセクションとDATAセクションの扱いが一緒くた
>なんですか?
>freeしないmallocはBSSセクションで代用しようと思ったんですが。
>スタックの下位の方に手作業で配置しようかなあ……

  はい、BSSセクションは0が連なるDATAセクション扱いになっています
。僕のおぼろげな記憶が正しければ、かつてOBJファイルを調べていた
ときに、BSSが0クリアされるのを前提にしているやつがあって(本当は
こんなのは許されないわけですが)、しょうがないのでBSSは0が連なる
DATAセクションと解釈して、それじゃああまりに容量がかさむのでDATA
セクション全体にl2d3をかけることにしたんです。

  その後、BSSの処理をしなくていいはらくだなーってことで、とりあ
えずずっとそのままにしている気がします。

  そんなわけで、BSS領域はスタートアップルーチンで初期化されてい
ることになるので、アクセスの有無に関わらず、メモリを食います。

  結局8MBくらいになるなら、それらを構造体にまとめて、その構造体
の先頭アドレスだけを手作業配置するのが一番簡単じゃないかと思いま
す。

  もちろん、アセンブラやリンカを直していただくというのも大歓迎で
す。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/



ML番号でジャンプ
ML単語検索