進め方
C++わからない。OSとか全然わからない。という状態です。
かなりのボリュームがある本なので、説明を読む・写経せずにコードだけ実行する。という感じで進めております。
機会があれば、写経してもっと理解を深めたいっすね。
3章
レジスタ:CPUに内蔵された記憶領域。
CPUに内蔵されているので、メモリよりもデータのやり取りが速い。
ただ、容量が少ない。
なので、よく使うものなどを入れておく。
レジスタには、汎用レジスタと特殊レジスタがある。
汎用レジスタは、自由に使うことができる(?)
特殊レジスタは、使用目的が決まっているもの。
cppファイル→オブジェクトファイル→実行可能ファイル
の順で実行可能ファイルを作成し、実行する。
オブジェクトファイルと実行可能ファイルの違いは、どちらも機械語にコンパイルされているが、ほかのファイルとのリンクができていないため、実行できない。
実行の流れメモ
source edksetup.sh
source /workspaces/mikanos_learning/mikanos-build/devenv/buildenv.sh
build
/home/vscode/osbook/devenv/run_qemu.sh /home/vscode/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi /workspaces/mikanos_learning/mikanos/kernel/kernel.elf
こんな感じのを毎回する。
おまじない程度の認識なので、どの命令が何をしているのかは理解していない。
とりあえず、何か動作しないときはここら辺のコマンドを打っておく。
4章
ABI(Application Binary Interface)とは、プログラムとCPUの相互作用を機械語レベルで規定する。
プログラムが動作するにあたり必要なレジスタやメモリの使い方がABIによって決まっている。
5章
........
...@....
...@....
..@.@...
..@.@...
..@.@...
.@...@..
.@...@..
.@...@..
.@@@@@..
@.....@.
@.....@.
@.....@.
@.....@.
........
........
文字は、↑のようなデータを用意する。
上記でいえば、@
の部分は塗りつぶす処理を、それ以外の部分は塗りつぶさないことで文字を表現している。
上記のようなフォントのテキストファイル→バイナリファイルに変換→リンクに必要な情報がついたオブジェクトファイルに変換
この操作をすることでカーネルから利用できるように。
おわり
引き続きちまちまやっていきたいです。
最後までさらっとメモを取りつつ、読み進めたら、次はコンピュータシステムの理論と実装を読んでみたいですねー。