OS自作入門 四日目

「OS自作入門 四日目」の編集履歴(バックアップ)一覧に戻る

OS自作入門 四日目 - (2007/07/09 (月) 02:16:27) のソース

*OS自作入門四日目のまとめ
自分のためのまとめなので、他の人には意味不かも。


**アセンブラ
 [INSTRSET "i486p"]				; 486の命令まで使いたいという記述

:RESB num| numの数だけメモリを確保。Reserve Byteの略。他にもRESW,RESD,RESQ,REST が存在し、それぞれワード、ダブルワード、4倍ワード、10バイトワード。
**C言語
:&(AND) | かつ。and演算。それぞれの桁について比較して、両方が1だったら1、どちらかが0なら0。
 0100 AND 1101 -> 0100
: (OR) | または。or演算。それぞれの桁について比較して、どちらかが1だったら1。
 0100 OR  1101 -> 1101
:^(XOR) | xor演算。どちらかが0かつもう一方が1のとき1。0かつ0は0。1かつ1は0。ビット反転。
 0100 XOR 1101 -> 1001

**C言語からメモリへの書き込み
C言語の関数上で与えられた引数は
 1番目[ESP+ 4]
 2番目[ESP+ 8]
 3番目[ESP+12]
 4番目[ESP+16]
 ...
に書いてある。


**ポインタ
 int i;
 char *p;
 
 p = (char *) i;
 *p = i & 0x0f;
変数iを宣言。
ポインタ用の変数pを宣言。
ポインタ用の変数pにポインタ変数にキャストしたiを代入。
p番地にiを0x0fでandをとった値を代入。

番地は以下の様に指定することが可能。
 *(p + i)
 *(i + p)
 p[i]
 i[p]
これらは全て番地の足し算。 

**色
8bitカラーモードでは0〜255の色番号の色の内16色を使うことができる。色番号は0x000000-0xffffffで、その設定にはまずパレットを設定する。パレットの設定には16進数2桁(=8bit)を3つ用いる。
このようにパレットを設定する。
 void init_palette(void)
 {
   static unsigned char table_rgd[16*3] = {
     0x00, 0x00, 0x00,   /*0;:黒*/
     ...
 }
これを16個指定する。

**その他
static宣言
----
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。