2007-05-01から1ヶ月間の記事一覧

起動するまでの長い道のり D言語編(1) 関数呼び出しの巻

不完全ながらプロテクト・モードに移行し、通常の32ビットコードを使う準備ができた。ここでいよいよD言語を導入していくことにする。

起動するまでの長い道のり プロテクト・モード移行編(2) セグメンテーション始動の巻

だいぶ間が空いてしまった(汗)。いよいよ実際にセグメンテーションを動かして、32ビットコードを実行するプロテクト・モードへ移行する。64KBの壁よさらば。今回のソース(setup.s)

起動するまでの長い道のり プロテクト・モード移行編(1) セグメンテーション薀蓄の巻

プロテクト・モードへの移行は起動処理の山場の一つだ。リアル・モードからプロテクト・モードに移って初めて32ビットのコードが動き、64KBの壁を破って4GBまでの全メモリにアクセスできるようになる。 x86系CPUでプロテクト・モードに移行するには、最低限…

Sourceforge.jpにソースコードをアップ

ここまでのソースコードをSourceforge.jpのSVNリポジトリにアップロードしました。 プロジェクト・ページ SVNリポジトリ 最新版がtrunk以下に入っています。またtags以下には、日記の各日付に対応したソースコードが入っています。 ビルド方法やライセンスは…

帰還

というわけで明日から更新再開します。ソースコードとかをsourceforgeプロジェクトにアップするかもしれません。きっとライセンスはNYSLでD言語で普通のOSを実装していくと思います。D言語ってOS書くための言語なんだね! という誤解を広めたいです(爆)。…

旅に出ます

2日くらい外出するので、コメントや更新が停止します。

起動するまでの長い道のり IPL編(10) qemuモニタリングの巻

カーネルが一括ビルドできるようになった。これで変更を加えてもコマンド一発で最新版が作れる。 だけど、デバッグはどうするのだろうか。文字表示はできるけど、まだ数字やレジスタの値を表示させることはできない。暴走したか単に無限ループで止まっている…

起動するまでの長い道のり IPL編(9) ビルド環境makeの巻

512バイトの制限を超えてカーネルの読み込みができるところまでをやった。これからソースファイルがどんどん増えていくと、ビルドがかなりめんどくさくなる。そこで今回は、makeを使った一括ビルドの方法を解説しようと思う。

加筆・修正

サイドバーにブックマーク表示追加 本サイトのネタ元がほぼ網羅されているので是非読もう。 スタック・セグメントの指定が間違っていたのを修正 0x0100にしなければいけないところが0x1000になっていた(汗)。 再修正。スタック・セグメントは0x0000のまま…

起動するまでの長い道のり IPL編(8) カーネル読み込み実装の巻

前回でディスクからのデータ読み込み方法と、その時にぶつかる壁について解説した。今回はいよいよデータの読み込み処理を実装していく。

起動するまでの長い道のり IPL編(7) カーネル読み込みの巻

実は、今まで黙っていたが、起動時のIPLはディスク先頭の512バイト=1セクタしか読み込まれない。1セクタだけだからブートセクタなんて言うのだ。 言うのだ、なんて威張っても仕方ない。OSのカーネルがまさか512バイトに納まるわけはないので、残りの部分を…

起動するまでの長い道のり IPL編(6) 続CPU解説の巻

今回はセグメンテーションと割り込みテーブルについて。でも多分あんまり詳しくやらない。できないから(笑)。 しかしいつになったらD言語が出てくるんだろう……プロテクトモードに行くようになったら出てくるはずなので乞うご期待!

起動するまでの長い道のり IPL編(5) CPU解説の巻

前回まで実際のソースコードを元に不器用に説明したけど、いい加減CPUの説明抜きで話を進めるのが非常に辛いと分かったので、必要最低限解説しておこうと思う。

修正

タイトルの番号が間違っていたのを修正(汗)。 言い回しをちょっと修正。 セグメントセレクタ→セグメントレジスタ セグメントを示す値がセグメントセレクタ。それを入れるレジスタがセグメントレジスタ。

修正

後から文章やソースコードを訂正したりした場合はこうやって記録する(汗)。 leawをmovwに修正。 IPLの文字列表示などでleawを使っていた箇所をmovwに直した。 IPLのprint関数の引数にあるカラーコードを削除。 設定しても反映されていなかった……。

起動するまでの長い道のり IPL編(4) 続アセンブラ解説の巻

前回まででセグメントを設定するところまでは説明した。いよいよメッセージ表示の部分について説明する。

起動するまでの長い道のり IPL編(3) アセンブラ解説の巻

ひたすら打つべし! 打つべし! だったアセンブラのソースについていい加減解説する。

起動するまでの長い道のり IPL編(2) 文字表示の巻

前回でとりあえず起動するまではできた。だが、前回のコードでは、プログラムの部分が無限ループするだけで何もしない。せめて起動したというメッセージくらいは表示させて、俺はマジで本当に起動したのだということを主張させたい。そのためには、恐怖のア…

起動するまでの長い道のり IPL篇(1) ディスクイメージ作成の巻

PC/ATマシンで動くOSを作る場合、PC/ATでのOS起動規格に則ってブートセクタ等を用意しなければならない。

加筆

qemuのウィンドウからの抜け方を加筆。

本格始動

3/3からずっと放置していて何が本格始動だよ、と言われそうだが本格始動なのでよろしく。実は会社を辞めた(爆)。それで次の仕事が見つかるまでしばらくはこのOS製作プロジェクトに専念しようと思う。居るか居ないか良く分からないけれど読者のみなさんそう…