Hatena::ブログ(Diary)

へにゃぺんて@日々勉強のまとめ

2015-01-03

プロテクトモードへ移行し、C言語のmain()実行までのサンプルプログラム

x86OSを作る際には、プロテクトモードへの移行など、やらなければならないことがあります。

考え方にもよりますが、この部分は、ソースコードを理解した上で、既存のものを流用して済ましてしまいたい箇所です。


そこで、Linux-0.01-rmのソースコードを元に、C言語のmain()を実行する所までのサンプルを作成しました。

マシン起動後、init/main.cのmain()の無限ループまでを実行します。

なので、後はC言語の世界でOSの機能を実装していくことができるサンプルになっています。


使い方

以下の記事で紹介した環境が整っていることが前提です。


git cloneして、makeすると、

Image

というファイルが生成されます。


これを、QEMUで以下のように実行します。

$ qemu -fda Image

以下でも同じことが行えます。

$ make run

main()の内容は、

volatileの変数に 0xbeefcafe という値を代入する

無限ループで繰り返す。

というものです。


画面上には何も表示されないので、動作確認の方法としては、

Ctrl+Alt+2 で、QEMUモニターに入って、

(qemu) x/2i $eip

のようなコマンドを実行して、

現在実行している命令が妥当なものであるか見てみてください。

例)

(qemu) x/2i $eip
0x0000507b:  movl    $0xbeefcafe,0xc(%esp)
0x00005083:  jmp     0x507b

QEMUモニターの使い方は、以下が参考になります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/cupnes/20150103/1420308953
リンク元