Hyfaxのこと(7)

x86リアルモードで動くモニタプログラムのHyfaxを作るお話の7回目です。前回まででboot0、boot1を経てmonitorを起動するところまでできました。やっとmonitor本体のお話ができます。
今回はmonitorにSysCallを導入したいと思います。Linuxでも使われている仕組みで、「直接BIOSを呼ばない」ための約束事です。なんかかっこいいですよねw

本格的に機能として実装しようとすると多岐にわたるのですが、今回は最低限、すぐに使うものだけを実装しようと思います。

HyfaxのSysCall

実装にはint 0x80割り込みを使います。定番だそうなのでそれに乗っかった感じです。
into 0x80を実行するとソフトウェア割り込みが発生し、事前に登録されたハンドラに制御が移り、実行後に戻る形ですね。

HyfaxのSysCall ABI

ABI(Application Binary Interface)はバイナリ同士が守る約束事です。APIがソースコード上の約束事(関数名、引数、型など)であるように、ABIは実行時の約束事(どのレジスタに何を入れるか、どこに戻り値が来るか)になります。

今回は5つの機能を実装します。

AH機能引数戻り補足
20hwriteDS:SIなし文字列出力
22hgetkeyなしAL一文字入力
23hputcharALなし一文字出力
24hnewlineなしなし改行
26hrebootなし戻らない再起動

実装

はい。実装です。こんな感じにしてみました。

実行結果はこんな感じになります。

なんだかそれらしくなってきましたね♪

さて、今日はここまでです。やっと終わりが見てうれしい限りです。

《2025/12/19 3:01:43》

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です