(toppers-users 260) Re: Why don't we use library.
Hiroshi Morita
morita @ adac.co.jp
2001年 8月 21日 (火) 11:06:06 JST
こんにちは、森田@ADCです。
前にお知らせしています、GHS環境ではカーネル部分はライブラリとして
構築してリンクする方式にしました。
参考までに、GHS環境でも
ライブラリ化する場合と全てのオブジェクトをリンクする場合の
コードサイズ比較をsample1のケースで出してみました。
monaka>こんにちは。
monaka>
monaka>At Thu, 16 Aug 2001 17:22:22 +0900 (JST),
monaka>TAKADA Hiroaki wrote:
monaka>> 試すのは、ご自由にどうぞ。
monaka>
monaka>試しました。
monaka>LINUX/sample1 を例にとって、現状のファイルのまま
monaka>(分割せずに)ライブラリ化してリンクしてみました。
monaka>stripしたバイナリサイズを比較したところ
monaka>おおよそ23%削減されました。
monaka>
ライブラリ化した場合
Section Base Size(16) Size(10)
.text a0000000 000064d4 25812
全てリンクする場合
Section Base Size(16) Size(10)
.text a0000000 00007efc 32508
やはり20数パーセントのコードサイズが減少します。
monaka>アプリケーション次第でしょうけれども、
monaka>ソースコードを汚さずとも、それなりの効果が
monaka>出るようです。
monaka>
takada>ソースファイル間のかなり高いはずです。例えば、イベントフラグを使わない
takada>なら、eventflag.c は不要です。もう少し具体的には、
takada>
takada> task_manage.o task_sync.o task_except.o \
takada> semaphore.o eventflag.o dataqueue.o mailbox.o mempfix.o \
takada> time_manage.o cyclic.o sys_manage.o interrupt.o exception.o
takada>
takada>の各モジュールは、そこに含まれるサービスコールを呼んでなければ、リンク
takada>する必要がありません。その他のモジュールは、取り外し効果が薄いと思いま
takada>す。
高田先生が言われてますように、サービスコールに依存するものが
取り外しが効きます。
サンプル sample1 では、
eventflag.o dataqueue.o mailbox.o mempfix.o time_manage.o
このファイルがリンク対象外になりました。
----------------------------------------------------------------------
(株)アドバンスドデータコントロールズ
技術本部 OS開発部 森田 浩
〒170-0004 東京都豊島区北大塚1−13−4 日本生命大塚ビル
(TEL)03-5394-8145 (FAX)03-3576-1772
(E-Mail) morita @ adac.co.jp (URL)http://www.adac.co.jp