GDT設定用クラスを作ってみた。ヘッダファイルはこんな感じ
#ifndef _GDT_MANAGER_ #define _GDT_MANAGER_ #include "DataType.h" typedef struct{ uint16_t limit_low; uint16_t base_low; uint8_t base_mid; uint8_t access_right; uint8_t limit_high; uint8_t base_high; } SegmentDescriptor; ///GDTを管理するクラス class GDTManager{ public: /** \brief コンストラクタ * \param addr セグメントディスクリプタの先頭アドレス * \param count セグメントディスクリプタの数 * * コンストラクタ */ GDTManager(uint32_t addr, uint32_t count); ///GDTRを読み込む void loadGDTR(); /** \brief GDTを設定する * \param index セグメントディスクリプタの位置 * \param addr メモリの先頭アドレス * \param limit メモリの制限 * \param ar アクセスs権限 * * GDTを設定する */ void setGDT(uint32_t index, uint32_t addr, uint32_t limit, uint32_t ar); private: ///セグメントディスクリプタの先頭 SegmentDescriptor* base; ///セグメントディスクリプタの境界 uint32_t limit; }; #endif