タスクシステム総合スレ part2at GAMEDEV
タスクシステム総合スレ part2 - 暇つぶし2ch63:名前は開発中のものです。
07/12/16 02:16:17 eEobSst5
単純で乱暴なやり方をするなら、割り込みベクタテーブルに
既存ルーチンの代わりに自分のアドレスを上書きして
先に自分の処理を呼び出させ、自分の処理が終わったら
既存ルーチンへジャンプさせる。つまり割り込み処理に割り込む。

もう少し紳士的なやり方なら(同じ割り込み信号にフックする)
割り込み処理ルーチン同士で協定を作り
割り込み処理ルーチンのリストを管理するルーチンを用意する。

こうした仕組みは>>58の言う

  1.呼び出し側と呼び出され側が1対多である
  2.呼び出し側は機能を持たない
  3.呼び出され側がさらに呼び出され側を登録することができる

を全て満たしている。

 呼び出し側=ハードウェア
 呼び出され側=割り込み処理ルーチン

ハードウェアは割り込み信号に応じて割り込みベクタテーブルの
当該アドレスに登録されてる割り込み処理ルーチンを呼び出す。
そしてリストに登録された順に次々呼び出される。
割り込み処理ルーチンは処理完了時のリターン命令を
他のルーチンへのジャンプ命令に書き換えることで
子ルーチンの追加が可能


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch