マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

無気力が溢れてるぞ!

何度目かのやり直しOS。無気力が溢れすぎて、なかなか進まない。とりあえずGDTRとSegmentDescriptorを宣言した。あと初期化や設定関数を宣言した。setGDTにGDTRを渡しているが、先頭アドレスだけ渡せばいい気がしていたが一応countとindexをチェックしておくべきなのかと思いGDTRごと渡している。こんなんでいいのかと疑問に思いつつ進めてる

typedef struct{
    uintptr_t addr;
    uint_16t count;
} GDTR;

typedef struct{
    uint_16t limit_low;
    uint_16t base_low;
    uint_8t base_mid;
    uint_8t access_right;
    uint_8t limit_high;
    uint_8t base_high;
} SegmentDescriptor;

void initGDTR(GDTR* gdtr, uintptr_t addr, uint_16t count);
void loadGDT(GDTR* gdtr);
void setGDT(GDTR* gdtr, uint_32t index, uintptr_t addr, uint_32t limit, uint_32t access_right);