OSメモ(2)
今日はリンカスクリプトを読んだ。
KERNEL_VMAは仮想アドレスのベースとなるアドレスだと思う。
ADDRは、
Return the absolute address (the VMA) of the named section.
と書いてあったので、VMAを含んだ(含んだという言い方はおかしいか).textセクションのアドレスということがわかる。
ATキーワードについてだが、64bitモードの場合、仮想アドレスと、ロードアドレスというのがあるらしく、普通は、セクションで同じ値が与えられるらしい。ATキーワードはVMAとLMAを別々のものにするために使うキーワードらしい。 つまり、
AT(ADDR(.text) - KERNEL_VMA)
は、セクションのロードアドレスを、KERNEL_VMAだけ引いた値にするということらしい。
64bitモードのメモリがよくわかってないのは、まずいな。
64bitモードのメモリのわかりやすい説明や資料(Intelのやつ見ればわかるんだろうけど)お待ちしています。(他力本願)
冗談は置いといて、メモリ周りは、今後調べないといけない課題だ。
時間がない〜〜〜(朝3:46なう)。
優しく教えてくれるコメントお待ちしています泣。