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日目の最後には、こんな感じの画面が出来上がっていたよ