個人用雑記

勉強したことを書いていければなーと

30日でできる!OS自作入門(Day 3-2)

32bitモード

雑に32bitの利点
・単純に表せる数が増える
・使えるメモリがいっぱい増える
・保護機能を入れ込むことができる
欠点
BIOSを利用できなくなる(BIOSは16bit用の機械語で書かれているから)
16bitモードと32bitモードでは機械語の命令番号も解釈の方法も異なるため全く別物と考えたほうが良い。つまり、32bitモードに移ってからはBIOSは使えなくなるため、BIOSでやっておきたいことは先にやり終えてから32bitモードへ移らなければいけない。

BIOSでやっておきたいこと
・画面モードの設定
・キーボードの状態の取得
・それらに関する情報の保存

C言語の導入

32bitモードに移るとついにC言語でOSを作ることができるようになる。。。が、実はC言語への移行はそう簡単な話ではない。今はまだ難しいことだらけなので後回し。
C言語とブートセクタを組み合わせて使うためには、機械語へ出力(順番的には.gas(gcc系のアセンブラ)→.nas(nask,nasm系のアセンブラ)→.obj(オブジェクトファイル)→.bim(本独自の形式、オブジェクトファイルは単体では動かないので必要な情報を加えたもの)→hrb(欲しかった元のC言語機械語Ver.))する必要がある。
こうして出来上がった機械語をブートセクタの機械語とくっつければC言語で開発したOSが遂に完成する。難しい・・・

C言語でHLT

C言語本来にはHLT命令がないため、アセンブラでHLT関数を定義し、それをC言語のプログラムで利用するという操作をする必要がある。でも、それをしてでもHLT命令を実行させる意味はたくさんある。多分。
アセンブラで関数を定義させておけばC言語側ではとりあえず同じ名前の関数を宣言するだけでよい。

Day4 へ

明日はC言語と画面表示の練習とのことです。C言語自体はチョットワカルくらいなのでどちらかというと画面表示の方に重点を置くべきかなといった感じですね・・・

二つにブログを分割したら思いのほか3-2が短くなってしまった。
そして見返したら何の画像もなかった。(添付するようなものもとくにはない)