K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>これは、CからDiksamの関数を関数名を指定して呼び出すということですよね。 >内部的に見るとそうです。 > 言語仕様から見ると、Aプログラムの内部からBファイル内にある関数B1を普通に >コールすることです。当初は、ファイル名.関数名();で起動しようか、関数プロ >タイプ宣言で"ファイル名":関数名();で内部的には普通の関数記述と思いましたが。 >いつ重いコンパイラが走るかコントロール出来ないので、プログラムファイル読込 >み関数と破棄関数(中間コードリソースの破棄)を作ることにしました。 > この仕様でVMの変更が発生します。それは、1ファイル内の関数コールはコンパ >イラで関数アドレスを生成しますが。ファイル外の場合、関数アドレスではなく関 >数名を持って、実行時リンクして関数コールする仕様が追加になります。 >(最外枠ブロックの実行構文はなくなり、ファイル名起動ではmain()が実行) > >中間コードの構造は。 >親 ファイル1 ファイル親ー>子 ファイルn >↓ |----------¬ |----------¬ >子 関数1 ・・・・・・ 関数n 関数1 ・・・・・・ 関数n > > の様に、階層構造の親子関係で関数置きに分離した中間コードになる予定です。 >この、ファイルnの部分が必要時にコンパイルされ中間コードに追加される感じです。 > この構造はちょうど関数単位のマルチスレッドに適応できます。 > >スレッド起動の仕様 >普通に関数名(P1,,,Pn);を書くと戻ってくるまでコール元は待ちます。 >start(関数名,起動P,,,Pn);と書くとスレッド起動となります。 >例 > thread_ID1 = start(fnc1,,,); > thread_ID2 = start(fnc1,,,); > thread_ID3 = start(fnc1,,,); >と書くとメインスレッドと3つのfnc1スレッドが同時に動きます。 > >関数については、この様な仕様を組込みたいと考えています。 >また、グローバルシステム変数とスレッド起動された関数は一般的なCのグローバ >ル変数やスレッドとは、かなり性格が違ったものになります。でも、この点は実物 >のめどが出来そうなときにでも、評価していただければ嬉しいと思っています。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!