【C】Poneytail(仮称)OSスレッド01【未踏】 (602レス)
1-

258
(1): 2005/05/31(火)23:57 AAS
MSに就職して.NET OS作ってください
259
(1): 2005/06/01(水)15:27 AAS
設計書もレポジトリに入れて毎日コミットすると良い
260: 957 ◆KhjEefLZMk 2005/06/02(木)15:12 AAS
>>225,256
いまはVis.Src.Safeのコミットログ見て作業内容思い出して書いてます。
ブログは・・・まあもうちょい考える。
最初は面白そうだけど、そのうち面倒になりそうw

>>258
MSでやっちゃうと微妙かも・・・。
国内企業でそーゆーことやるなら参加したいなあ。

>>259
いまのところ設計書というものは存在してません(^^;
261: 957 ◆KhjEefLZMk 2005/06/02(木)15:13 AAS
アンカーミス。。。
×225
>>255
262: 2005/06/18(土)17:08 AAS
ガーベジコレクタ は実装完了?
263: 957 ◆KhjEefLZMk 2005/06/19(日)01:27 AAS
まだまだJITですよ・・・・orz
6月は頑張ってるので徐々にできてきてますけど。
正直未踏期間中にガベコレあやしいかも・・・。
264: 2005/06/19(日)02:10 AAS
終わりが8末だっけ?そうなると成果報告会が8頭あたりか。
まだ一ヶ月以上あるじゃねーか。
265: 957 ◆KhjEefLZMk 2005/06/19(日)08:16 AAS
そういや成果発表会って期間中なんだ…。やべー。
ガベコレだけで一ヶ月以上かかるだろうし。
JITを頑張って偽GUIでも作った方がいいかな。
266
(1): 957 ◆KhjEefLZMk 2005/06/20(月)17:36 AAS
JITの道は果てしなく遠い・・・。
まだまだ命令残ってます。ふぅ。

サイトのスクリーンショットを更新しました。
文字を描画した例ですが、ビットマップ貼り付けではなくてフォントレンダリングをしています。

次はJITの結果。前回と計算内容は同じ(nまでの総和)ですが、
f(x) -> if(x=0) 0 else g(x-1)
g(x) -> if(x=0) 0 else f(x-1)
としています。

非JIT:
x= 0, y= 0, time= 279539
省17
267: 2005/06/20(月)18:23 AAS
単純な数値計算能力も大事だが、
仮想関数呼び出しやインターフェイス関数呼び出しはどうなの?
268
(1): 957 ◆KhjEefLZMk 2005/06/20(月)18:47 AAS
そいつらはいまのところシステムコールにしちゃってるので遅いっす。
#システムコールまではまだコンパイルできないし。。。

原理的には、仮想関数呼び出しは4重間接アドレッシング呼び出しの機械語に展開できるはず。
インターフェイス関数の呼び出しは・・・システムコール挟まないと無理かも。

両方ともC++のvtable方式にすれば速くなるけど、CLI的には普通ではないので、やるとしてもずっと後かな。
269
(1): 2005/06/20(月)19:13 AAS
>>266
> 文字を描画した例ですが、ビットマップ貼り付けではなくてフォントレンダリングをしています。
FreeType2とありますが、まさか.NETでリライトしたんですか!?
270
(1): 2005/06/20(月)19:29 AAS
>>268
解説トンクス
271: 957 ◆KhjEefLZMk 2005/06/20(月)22:10 AAS
>>269
よくぞ聞いてくれました!w
それが Managed C++ でコンパイルしただけなんです。
#標準関数のたぐいは自力で用意して。
FreeTypeが標準関数にも依存しないようになっているので助かりました。
272
(1): 957 ◆KhjEefLZMk 2005/06/20(月)22:21 AAS
>>270
C++では、インスタンスが仮想関数テーブル(vtable)の中に関数ポインタをすべて持っています。
これはインスタンスへのポインタがあれば仮想関数を使える一方、
同じ型のインスタンスが全く同じvtableを持っている=メモリが無駄と言えます。

もうひとつ、重要な特徴として、C++ではインスタンスのポインタが移動します。つまり、
class T : IX, IY
としたクラスについて、
T t;
IX* px = &t;
IY* py = &t;
省2
273
(1): 957 ◆KhjEefLZMk 2005/06/20(月)22:26 AAS
.NETでは、インスタンスは型情報だけを持っていて、型情報に仮想関数テーブル(vtable)があります。
また、NETの場合は、C++のようにポインタが移動したりはしません。
移動してしまうと型情報の追跡が困難になるからです。

このとき、仮想関数は親クラスからの"多重継承のない"増加なので、
ある仮想関数のvtable内でのインデックスは一意に決めることが出来ます。
なぜなら、あるクラスで最初の仮想関数のインデックスは、(親の仮想関数の数)+1だからです。
これより、ある仮想関数のインデックスは、JITコンパイル時に決定可能です。
一意なインデックスで参照できるのであれば、多重間接参照でなんとかなりそうです。

しかし、インターフェイスの場合にはこのようにはいきません。
あるインターフェイス関数の位置は、それを実装するクラスによって異なるからです。
省10
274
(1): 2005/06/20(月)22:49 AAS
>>272-273
解説トンクス は267の返答ありがとうってことだったんだけど、
268の意味までご丁寧に説明してもらってありがとね。

折れには、大して説明できる能力ないので参考になるかもしれないリンクを。
知っていたらスマソ。

Java JIT について
外部リンク[pdf]:logic.is.tsukuba.ac.jp
外部リンク[pdf]:www.research.ibm.com

Direct Threaded Codeについて(命令ディスパッチの高速化)
外部リンク:www.complang.tuwien.ac.at
275: 957 ◆KhjEefLZMk 2005/06/20(月)23:28 AAS
>>274
ぁ、勘違いでしたか…orz
まあメモ代わりということで(苦笑

リンク先はとても役に立ちそう・・・なのは大分先かもしれませんが、面白かったです。
最適化は茨の道らしいというのはよく分かったw さんくす〜。
276: 2005/08/05(金)02:42 AAS
外部リンク[php]:mitou.mysite.ddo.jp
渋谷か…行けるかなあ。
277
(1): 957 ◆KhjEefLZMk 2005/08/05(金)17:03 AAS
本人にも連絡来てないのに ?(゚□゚

でもまだ19日か20日か決まってないみたいですね。早く決めてほしい。
1-
あと 325 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.386s*