thirtydaysosの最近のブログ記事

4 章: C 言語と画面表示の練習

今日は C からアセンブラの関数を呼び出しの第 2 段。引数のある関数の呼び出し方。x86 がということなのか、今回が特別なのかは分からないけど、引数はすべてスタックに入るご様子。これは、C言語の「関数呼び出し時、引数はスタックに積まれます」と習ったまんまやね。ビルド過程で作られるリストファイル(アセンブラと機械語が並べて書かれたファイル)を見ながら、どういう風にアセンブラに変換されているのかを理解。

あとはポインタ変数を使って VRAM 領域にアクセスして直接描画する仕組みと、C 言語におけるポインタそのものの説明が続く。このあたりは超楽勝。僕もポインタを勉強するのにはアセンブラはいい方法のひとつだと思います。以上で、縞模様の画面を書くことが出来ました。だから、縞模様は OS には関係ないんだけど、VRAM にポインタでアドレス指定してアクセスするってのが OS 作りとしてはミソになるのかなぁ、と考えつつ 4-5 まで終了。 ほとんどポインタの説明だったからこれといって書くことはありませんでした。

3 章: 32ビットモード突入と C 言語導入

まずは、フロッピーの作りについて。同心円状のシリンダが 80 個あって、1 つのシリンダに 18 個のセクタがあって1 つのセクタが 512バイト。それが両面あるから

80 * 2 * 18 * 512 = 1474560 byte

これがフロッピーの容量ということになる。フロッピーのロードもシリンダとかセクタをレジスタで指定してINT 命令で行うとのこと。

2 章途中から。

文字を表示させるには

MOV AH 0x0e
MOV AL キャラクターコード
MOV BX 0x000f
INT 0x10

とするらしい。INT 命令はソフトウェア割り込みの命令で BIOS の機能を呼び出すらしい。 で、0x10 はビデオカード制御に関する割込みということのようだ。BIOS って、IPL とかブートデバイスの設定とかするだけだと思っていたら、実はこの辺も全部やってくれているらしい。でも、よく考えてみたら BIOS = Basic I/O System なんだから、そうだよな。

次にメモリマップの話。ORG 0x7c00 ってブートセクタは 0x7c00 - 0x7dff の 512 バイトの領域だそうだ。なんで、このアドレスかというのはこれは Intel のおっちゃんがそう決めたからということ。勝手に決めたというても、ハードのアーキテクチャの話も絡んでくる話だろうから、しょうがないわな。

あと、hello world を表示するだけのプログラムの最後は

fin:
   HLT
   JMP fin

となっていて、HLT を入れることで CPU が止まって(割込みは受け付ける)、HLT のない無限ループと違って電気代の節約になるということが書かれていた。この考えには私も大賛成。ただ単純に無限ループが気持ち悪いというのも歩けど、ドライバとか OS とか下っ端のプログラムはこういうところも気をつけないとね。裏方がしゃしゃり出てはいけません。必要がないデバイスの電源は OFF にする。CPU ももちろん例外じゃありませんよと。携帯電話で閉じた状態のときにバックライトが OFF になるだけで液晶自体は表示されたままのがあるんですよね、そういうのはちょっとなんで…と思いますよね。特許回避のためかもしれないんだけど。

2 章の残りは Makefile の説明があって終わり。

2 章:アセンブラ学習と Makefile 入門

昨日書いたブートセクタのアセンブラは 1 バイトのデータを書く DB 命令、ワードのデータを書く DW 命令、領域を確保する RESB 命令のみで書かれていたので、実質バイナリとそれほど変わらないのだけど、今日はそれと等価できちんとした?アセンブラの紹介。でも昨日書いた DB だらけのプログラムを MOV 命令などで書き換えたものが突然出てきたので、「え?これなんのプログラム?」と一瞬戸惑った。

30日でできる! OS自作入門

4 月 20 日のやじうまウォッチなどいろいろなところで話題になっている「30 日でできる OS 自作入門」を購入。

毎日パソコンを使うけれども、パソコンの OS って実はどういう仕組みで動いているのかよくわかっていない。「パソコンの OS」ってじゃあ他の OS は分かっているのかよ?ということになるが、過去にARM で動く μITRON のコードは見たことがある。でも、その OS が動いていたシステムの入出力デバイスはマウス、キーボード、ディスプレイではなかったし、タスクの制御方式も違うし、ファイルシステムもなかった。つまり「パソコンの OS」に関していえば素人である。

自分自身どこまでできるのかわからないけど、この本で「パソコンの OS」について学習していきたいと思う。30日では終われるわけがないので、目標を 30 営業日 (読書日?) を目安においてやっていくつもり。

1 2 >>

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ