FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「30日でできる!OS自作入門」を読み始めた (27日目 LDT / GDTと環境の改善)

30日でできる! OS自作入門

30日でできる! OS自作入門

27日目はLDTの改造と環境の改善だ。GDTに対する理解が甘いので、LDTについて読んでもなんかまだしっくり来ない。復習が必要だなあ。。。

  • Global Descriptor Table[GDT] : 全てのプログラムから共通にアクセスするセグメントを定義する
  • Local Descriptor Table[LDT] : タスク単位に存在する
f:id:msyksphinz:20180518013001p:plain
図. 複数アプリケーションも立ち上げることができるHaribote-OS環境

あと、環境の整理を行った。API群はライブラリとして定義するので、arコマンドを使ってHaribote-OSのAPIをライブラリ化した。

github.com

OBJS_API = api001.o api002.o api003.o api004.o api005.o api006.o \
                        api007.o api008.o api009.o api010.o api011.o api012.o \
                        api013.o api014.o api015.o api016.o api017.o api018.o \
                        api019.o api020.o

apilib.lib : Makefile $(OBJS_API)
        ar rcs $@ $(OBJS_API)

%.o:%.nas Makefile
        nasm -felf32 $< -o $@ -l $@.lst

最終的にディレクトリ構成は以下のようになった。

.
├── Makefile
├── a
│   ├── Makefile
│   └── a.c
├── a_nask.h
├── apilib
│   ├── Makefile
│   ├── api001.nas
│   ├── api002.nas
│   ├── api003.nas
│   ├── api004.nas
...
├── app_common.mk
├── beepdown
│   ├── Makefile
│   └── beepdown.c
├── bootpack.map
├── color
│   ├── Makefile
│   └── color.c
├── color2
│   ├── Makefile
│   └── color2.c
├── haribote
│   ├── Makefile
│   ├── a_nask.nas
│   ├── asmhead.nas
│   ├── timer.c
│   └── timer.h
├── hello
│   ├── Makefile
│   └── hello.nas
├── hello2
│   ├── Makefile
│   └── hello2.nas
├── hello3
....

これでハリボテOSとしてはほぼ完成だ。28日目は日本語関係を対応しよう。