3日目が約1年前... 再開しました
3日目でC言語を使えるようにしたので、 C言語で画面を表示してみようという内容になっています
goto LABELをforに書き直したり...
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に相当するよーとか
言葉的に迷ったのがPUSHFDとPOPFD それぞれフラグの値を取り出すためのものなのだけど、
PUSHFD-> フラグの値をスタックにpushする(取り出す)POPFD-> スタックから値をpopし、フラグに設定する(渡す)
push and pop はスタックベースに考えよう (フラグベースに考えると混乱する)
知識のおさらいとしては、 C言語の規約ではreturnしたときにEAXに入っていた値が関数の戻り値とみなされる かな
これはFE試験のCASLL2も同じような仕様だったと記憶している
再開が1年ぶりになってしまってたのだけど、
git管理していたり Makefileや.gitignoreをきちんと設定していた 1年前の自分に感謝
4日目の最後には、こんな感じの画面が出来上がっていたよ
