あんたいとる

無駄の中に宝がある!

30日でできる! OS自作入門(六日目)

分割コンパイルと割込み処理

新しく学んだ知識

ソースファイル分割

分割するメリット

  • 処理内容できちんと分類しておけば、改造などをするときに目的の場所を探しやすい
  • Makefileを上手く書いておけば書き換えたファイルのみがコンパイルされるのでmakeが速くなる
  • 各ソースファイルが短くなるので扱いやすい  

分割するデメリット

  • ソースファイル数が増える
  • 分類に失敗すると改造する箇所を見つけるのに苦労する

Makefileの整理

同じ処理をする箇所を一般規則にまとめられる

%.gas : %.c Makefile
    $(CC1) -o $*.gas $*.C

%.nas : %.gas Makefile
    $(GAS2NASK) $*.gas $*.nas

%.obj : %.nas Makefile
    $(NASK) $*.nas $*.obj $*.lst

ヘッダファイルの整備

各ファイルの重複部分を取り除いてヘッダフィアルにまとめる

GDTRレジスタ

GDTRレジスタの下位16ビット(2バイト)はリミットを表しており、これは「GDTの有効バイト数-1」のこと。GDTRの上位32ビット(4バイト)はGDTが置いてある番地を表す。

命令      説明    
LGDT     番地を指定するとそこから6バイト(48ビット)を読み取ってGDTRレジスタに代入する。    
PUSHAD PUSH EAX, PUSH ECX, PUSH EDX, PUSH EBX, PUSH ESP, PUSH EBP, PUSH ESI, PUSH EDIの8命令に相当する命令
POPAD PUSHADのPOP版
CALL   関数を呼び出す命令

6日目の感想

GDTの説明のところは何度か読み直したが、きちんと理解できなかった。別の書籍などで詳しく調べたい。