OSを作ってみよう day010
IPLにエラー処理を追加したら、エラーにしかならなくなったので、原因を調査してみようと思ったが・・・ ( ゚д゚)「そもそも、アセンブラがろくに理解出来てない。」 nasmでのコンパイルに気を良くして、ちゃんと理解しないからこういうことになる。 何度も何度も読み返して、wikipediaで調べて、ググってググって、以下のように理解した内容をまとめると。
- アセンブラのプログラムは命令セットを使い、レジスタ(記憶回路)にデータを突っ込んだり計算したりして進んでいく。
- レジスタは、高級言語における変数みたいなもん。
- レジストには、8bit, 16bit, 32bit, 64bitがある。※OS自作入門では16bitレジスタを使っている。
- 命令セットは、CPUの仕様に依る。なのでintel様の仕様に従う。x86ってやつだぜ。
- ラベルという形で処理をある程度の単位でまとめることが出来る。関数みたいな感じね。
うむうむ。少しずつ分かってきた。 ちなみに16bitレジスタは、以下の8+セグメントレジスタ6つである。
AX, BX, CX, DX, SP, BP, SI, DI セグメントレジスタ ES, CS, SS, DS, FS, GS
なんか、それぞれ名前とか意味とか付いてるんだけど、要するに記憶出来るのは16bitの情報ってことだと理解。とりあえず暗記しよう。 役割に応じて、向き不向きがあるらしいんだけど、ひとまずそこはざっくりと理解しておく。 つぎに命令セット。ググってみたところ、素晴らしいページをハケーン。 アセンブリ言語 後は、iplのコードを一行ずつ読んでいくだけだ! 今日はここまで。