立ち読みコーナー >30日でできる! OS自作入門
 
  立ち読みコーナー

  30日でできる! OS自作入門
ご購入はこちらへ
 
プログラミングの基礎からはじめて、30日後にはウィンドウシステムを有する32bitマルチタスクOSをフルスクラッチで作り上げるという入門書。ビギナーでも無理なく作成できるようPCの仕組み・アセンブラ・Cの解説から始まり、試行錯誤を繰り返しながらアルゴリズムを学びつつ、たのしく自由な雰囲気でOSをゼロから構築していくという、他に類を見ない手法による、趣味と実用と学習を兼ね備えたOS作成の入門書です。

 
  ▼2-2 さて開発再開

昨日はhelloos.nasのコメント部分について十分に説明し終わっていなかったのですが、「プログラム本体」より前の部分と「ブートセクタ以外の部分」については、フロッピーディスクに関するある程度詳しい知識が必要で、それはあとになったら出てくるので、それまでは保留ということにします。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/26KB)
 
  さて、AXやSSの説明です。CPUにはレジスタという記憶回路がありまして、これはまさに機械語における変数です。代表的なレジスタは次の8つです。それぞれのレジスタの名前には本名がありまして、それを知る機会が今ではあまり多くないようなので、ついでに紹介しておきましょう。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/128KB)
 
  これが32ビットレジスタです。今回のプログラムでは一度も出てきていませんが、しかし使いたければ問題なく使えます。レジスタ名は、16ビットレジスタ名の頭にEをつけただけでして、このEの由来は何かというと、やっぱりextendなわけです。16ビット時代から見れば、32ビットは大拡張だったわけです。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/30KB)
 
  レジスタの説明でCPUの恥ずかしい記憶能力が明らかになった今、まともな情報処理をするには、記憶する回路を別に用意してやらないといけないのは自明のことです。32ビットCPUでさえ、普通のレジスタだけでは32バイトしか覚えられないわけです。あのよく分からないセグメントレジスタをフルに使ったとしても、合計たったの44バイトです。これじゃあ、実行に必要なブートセクタの中身すら満足に覚えられません。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/136KB)
 
  メモリ番地の指定方法ですが、定数だけではなくレジスタを使うこともできます。たとえば、BYTE[SI] とかWORD [BX] とかです。SIに987が入っていれば、BYTE [SI] というのはBYTE [987] と解釈されて、987番地のメモリを指定したことになります。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/24KB)
 
  最近のBIOSは、PCの設定画面とかも受け持っていて大忙しなのですが、とにかくこの名前の通り、もとはOS開発者のための関数の集まりだったのです。で、INT命令というのは、その関数を呼ぶために使う命令なのです。ちなみに、INTのうしろに数字を書いていますが、これをいくつにするかによって、BIOSのどの関数を呼び出すかを選ぶことができます。今回は0x10(つまり16)番の関数を呼び出しています。これは、ビデオカード制御に関する関数です。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/KB)
 
  みなさんのPCには、多分64MBとか、もしかしたら512MBくらいの、非常にたくさんのメモリが搭載されていると思います。しかしこのメモリ全体を好き勝手に使っていいのかというと、実はそうではないのです。たとえばメモリの0番地、つまり一番最初のところですが、これはBIOSくんがさまざまな用途で使っておりまして、ここを勝手に使うと、もれなくBIOSとのけんかになり、BIOSは誤動作するし、あなたのプログラムも誤動作するという、とても悲しい物語になるわけです。また一方、メモリの0xf0000番地付近は、BIOSそのものがおりまして、ここも使えません。
※クリックするとPDFファイルを別ウィンドウで表示します(1ページ/18KB)
 
  ▼8-4 動けマウス(harib05d)

解読部分はうまくいっているようなので、表示部分をさらにいじって、ついにマウスカーソルを動く
ようにしてみます。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/33KB)
 
  ▼22-1 OSを守ろう(5)(harib19a)

みなさんおはようございます。
昨日は最後にcrack2.hrbをやっつけたわけですが(えっへん)、今日はもっとしつこい攻撃をしてみようと思います。……ということで、ここからまた悪人モードです(笑)。いひひ。
※クリックするとPDFファイルを別ウィンドウで表示します(1ページ/20KB)
 
  よーしできたぞ。さっそく「make run」。そして「crack3」と入力して、「はりぼてOSめ、これでもくらえ!」と念じながらEnterを押したぞ。
※クリックするとPDFファイルを別ウィンドウで表示します2ページ/39KB)
 
  また例外かよ! どうしてなんだよー! 一回くらい勝たせろよ! くやしいぞー。アプリがOSの好きなところをCALLできてしまうと、このようないたずらが成功してしまうため、CPUは設定された番地以外のCALLを禁止しています。ということで、「はりぼてOS」でアプリがOSを呼び出す方法はINT 0x40 しかないわけです。
※クリックするとPDFファイルを別ウィンドウで表示します(2ページ/39KB)