議論/monapi+monalibc/crt


Top / 議論 / monapi+monalibc / crt

このページは何か? (by ひげぽん)

経緯

議論/monapi+monalibc参照。

現状把握と問題点

構造

monapi = crt(monapi.o) + システムコール関数 + MonAPI関数(Message/File APIなどなど)
monalibc = crt(crt.o) + libc関数

crtの利用

ほぼ全てのアプリが crt(monapi.o)を利用している。(いわゆるMonaMain)

問題点

ひげぽんの考えた改善案

案1 ユーザーは crt(monapi), crt(monalibc)のどちらを選んでも良いことにする

案2 crtは1つに統一し、monapiに置く

案4つ

意見とか

意見・反論お待ちしています。

コメント

最新の1000件を表示しています。 コメントページを参照

お名前:
  • weakシンボルを利用した案はボツとなりました。理由はあとでまとめます。 -- ひげぽん 2006-11-23 (木) 20:40:12
  • weakシンボルの実験をしてみました。PEの weak シンボルを試す。あわせてmona-stdioをいろいろ最新にしました。(from trunk)。これからlibcの実験にとりかかります。>Yumeさん -- ひげぽん 2006-11-22 (水) 21:41:58
  • 皆さんから頂いた意見を整理しました。議論/monapi+monalibc/crt案4つ。Yumeさんはどれが良いと思いますか。僕はWeakシンボルがバランスが良く面白げだと思っています。 -- ひげぽん 2006-11-22 (水) 00:23:27
    • 見比べてみたけどweakシンボルですね。リフレクションみたいで面白い。 -- Yume 2006-11-22 (水) 16:57:25
    • じゃあ仕事が終わったらプロトタイプを実装してみます。 -- ひげぽん 2006-11-22 (水) 16:59:41
    • gcc のバージョンに依存する実装はかなりマズーだと思います -- bayside 2006-11-22 (水) 18:01:15
    • 正確にはgcc4.0系が必要になるということなので、開発推奨環境をgcc4.0以降にすれば良いのではないでしょうか。cygwinを使って新しく開発を始める人はそもそもgcc 4.0系がインストールされそうですし。あとgcc 4.0系の方がいろいろ恩恵があるので個人的には良いかなと思っています。 -- ひげぽん 2006-11-22 (水) 18:34:18
    • 現在のgccのメインストリームはgcc3.4系だと考えていますが・・。 -- bayside 2006-11-22 (水) 22:29:55
    • cygwinのgccの話であれば、まだgcc 3.4ベースのようですね、ただ例えばUbuntuのデフォルトで入るgccは 4.1.2です。Fedora core5はgcc4.1だそうです。これを考えるといずれにせよもうまもなく gcc 4.0系に移行するのではないでしょうか。 -- ひげぽん 2006-11-22 (水) 22:39:59
  • (2chより)EXEのエントリポイントの前に各DLLのエントリポイントを呼べばいいんじゃね? -- ひげぽん 2006-11-21 (火) 22:09:34
    • (2chより)エントリポイント使うと順序の問題に出くわさないし結構綺麗に出来るんよね。
      DLL前提でやる限り割とオススメ。 -- ひげぽん 2006-11-21 (火) 22:11:04
    • (2chより)monaの梨花はDLLのエントリポイント無視してる -- ひげぽん 2006-11-21 (火) 22:11:31
    • 直せばいいじゃん。梨花で依存され順にDLLのエントリポイントを並べて、順番にCALLするコードを生成して、カーネルにエントリポイントとして渡せばいいだけ。A.EXE -> B.DLL(依存)B.DLL -> C.DLL(依存)カーネルに渡すエントリポイント: CALL C.DLLのエントリポイント CALL B.DLLのエントリポイント JMP A.EXEのエントリポイント -- ひげぽん 2006-11-21 (火) 22:13:19
  • (2chより)libcはmonapiの上にあるんでmonapiのランタイムは必ずリンク、
    libcの関数使うなら加えてlibcのもリンク、みたいな。
    ウィークシンボルとか使えば特別問題なくやれるはず。 -- ひげぽん 2006-11-21 (火) 22:06:17
    • (2chより)詳しくっつっても、割とそのまんまな話。
      現状のコードでlibcとmonapiの両crt共通な処理はmonapiのだけが持って、
      libcで必要なstdio初期化なんかについてはウィークシンボル使って
      libcがリンクされてる時だけ実行されるようにする。
      どうせDLLなんでエントリポイント使うのも確かにいいかも。 -- ひげぽん 2006-11-21 (火) 22:08:28
  • monapiみたいに必要になったときに初期化すればいいんじゃないかという発想に行き着いたけど。実際ifのコストがドレクライな物なのか心配だな… -- Yume 2006-11-21 (火) 20:14:10
    • 実はあれ、どうしても浮かばなくてあーなりましたが。どうにか直したいと思っていたりします(ぉ -- ひげぽん 2006-11-21 (火) 21:01:02
  • __attribute__*1やdestructorでinit_libcとfini_libcを呼び出すとかどうですかね? -- Yume 2006-11-20 (月) 19:42:43
    • (2chより)init_libcが実際に呼ばれるまで他の静的コンストラクタ/デストラクタ内で
      stdio使えないのを解決する(コンストラクタリスト内の順序を制御する?)か諦めるならアリ -- ひげぽん 2006-11-20 (月) 23:56:45
    • たしかに2chの方の指摘の通りinvokeFuncList(__CTOR_LIST__);よりもlibcを初期化しないとまずいっすね。ちなみにcrtを共存させる・統一するなどなどはどちらが良いと思っていますか。>Yumeさん -- ひげぽん 2006-11-20 (月) 23:59:44
  • (2chより)詳しくっつっても、割とそのまんまな話。現状のコードでlibcとmonapiの両crt共通な処理はmonapiのだけが持って、libcで必要なstdio初期化なんかについてはウィークシンボル使ってlibcがリンクされてる時だけ実行されるようにする。どうせDLLなんでエントリポイント使うのも確かにいいかも。 -- ひげぽん 2006-11-19 (日) 23:53:33

MENU

now: 3

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3573, today: 1, yesterday: 0

*1 constructor

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3740d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.063 sec.