THINK

Linuxで始めるOS自作入門: 4日目

3/30/2020

3日目が約1年前... 再開しました

3日目でC言語を使えるようにしたので、 C言語で画面を表示してみようという内容になっています

goto LABELforに書き直したり...

fin:
    io_hlt();
    goto fin;
for (;;) {
    io_hlt();
}

久しぶりすぎて詰まったところといえば、 nasfunc.nasに関数を追加したときにGLOBALを書き忘れたくらいかなーと

8, 16, and 32 bits のデータを扱う場合、 それぞれ対応した型である char, sort, and intを使おうねーとか、 ポインターはアドレスなんで4bytesだよーとかそんな感じ

*(p + i)p[i]なのでi[p]とも書けるよーとか

staticはアセンブリのDBに相当するよーとか

言葉的に迷ったのがPUSHFDPOPFD それぞれフラグの値を取り出すためのものなのだけど、

push and pop はスタックベースに考えよう (フラグベースに考えると混乱する)

知識のおさらいとしては、 C言語の規約ではreturnしたときにEAXに入っていた値が関数の戻り値とみなされる かな

これはFE試験のCASLL2も同じような仕様だったと記憶している

再開が1年ぶりになってしまってたのだけど、

git管理していたり Makefile.gitignoreをきちんと設定していた 1年前の自分に感謝

4日目の最後には、こんな感じの画面が出来上がっていたよ

OSの画面