OSメモ(2)

wiki.osdev.org

今日はリンカスクリプトを読んだ。

KERNEL_VMAは仮想アドレスのベースとなるアドレスだと思う。

ADDRは、

Return the absolute address (the VMA) of the named section.

と書いてあったので、VMAを含んだ(含んだという言い方はおかしいか).textセクションのアドレスということがわかる。

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Using_ld_the_GNU_Linker/expressions.html

ATキーワードについてだが、64bitモードの場合、仮想アドレスと、ロードアドレスというのがあるらしく、普通は、セクションで同じ値が与えられるらしい。ATキーワードはVMAとLMAを別々のものにするために使うキーワードらしい。 つまり、

AT(ADDR(.text) - KERNEL_VMA)

は、セクションのロードアドレスを、KERNEL_VMAだけ引いた値にするということらしい。

64bitモードのメモリがよくわかってないのは、まずいな。

64bitモードのメモリのわかりやすい説明や資料(Intelのやつ見ればわかるんだろうけど)お待ちしています。(他力本願)

冗談は置いといて、メモリ周りは、今後調べないといけない課題だ。

時間がない〜〜〜(朝3:46なう)。

優しく教えてくれるコメントお待ちしています泣。