(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