分割コンパイルと割込み処理
新しく学んだ知識
ソースファイル分割
分割するメリット
- 処理内容できちんと分類しておけば、改造などをするときに目的の場所を探しやすい
- 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の説明のところは何度か読み直したが、きちんと理解できなかった。別の書籍などで詳しく調べたい。