タスクシステム総合スレ part2at GAMEDEVタスクシステム総合スレ part2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト62:名前は開発中のものです。 07/12/16 01:50:58 eEobSst5 >>58 タスクシステムが誕生する70年代末期よりも遥か前の 古典的なコンピュータのプログラムで既に同じようなことをやってるだろ。 例えば、割り込み信号にフックするとき、つまり割り込み処理ルーチン (常駐プログラム・サービス)を割り込みベクタテーブルに追加するとき 既存のルーチンがあればそれと数珠繋ぎにするだろ 63:名前は開発中のものです。 07/12/16 02:16:17 eEobSst5 単純で乱暴なやり方をするなら、割り込みベクタテーブルに 既存ルーチンの代わりに自分のアドレスを上書きして 先に自分の処理を呼び出させ、自分の処理が終わったら 既存ルーチンへジャンプさせる。つまり割り込み処理に割り込む。 もう少し紳士的なやり方なら(同じ割り込み信号にフックする) 割り込み処理ルーチン同士で協定を作り 割り込み処理ルーチンのリストを管理するルーチンを用意する。 こうした仕組みは>>58の言う 1.呼び出し側と呼び出され側が1対多である 2.呼び出し側は機能を持たない 3.呼び出され側がさらに呼び出され側を登録することができる を全て満たしている。 呼び出し側=ハードウェア 呼び出され側=割り込み処理ルーチン ハードウェアは割り込み信号に応じて割り込みベクタテーブルの 当該アドレスに登録されてる割り込み処理ルーチンを呼び出す。 そしてリストに登録された順に次々呼び出される。 割り込み処理ルーチンは処理完了時のリターン命令を 他のルーチンへのジャンプ命令に書き換えることで 子ルーチンの追加が可能 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch