[linux-users: 108946] Re: BIOS-e820
katot @ jp.fujitsu.com
katot @ jp.fujitsu.com
2013年 6月 19日 (水) 09:14:20 JST
かとうです。
ありがとうございます。
こういう細かい話が好きだったので質問したので、助かりました。
On Tue, 18 Jun 2013 19:12:34 +0900
KATO Masashi <mkato @ par.odn.ne.jp> wrote:
> 加藤と申します。
>
> Tue, 18 Jun 2013 17:15:47 +0900 付
> katot @ jp.fujitsu.comさんのメールより引用:
>
> > AXレジスタに"e820"と値を入れて、int 15hを呼び出すと、戻り値が
> > メモリの使用状況って事であってます?
>
> ここは AT 互換機の - x86系機械語命令レベルの話になりますね。
>
> "int" は機械語(アセンブラ)の割り込み(interrupt)命令で、主としてCPUやメモ
> リから見て「外部機器」にあたるシステムタイマ、キーボード、BIOSチップなど
> との連携用に使われる命令です。
>
> どの機器にアクセスするかを決めるのが int 命令のパラメータ ("割り込みベク
> タ番号"といいます。ここでは 15H(=10進数で21)) で、この命令(int 15h)が発
> 行されると、 BIOS チップ内のシステムサービスが呼び出されます。
>
> この時 CPU内の AXレジスタの値を E820H(=10進数で59424)にセットしておく
> と、BIOSチップ内のシステムサービスプログラムの中のメモリマップ取得プログ
> ラムが実行され、結果のデータ(実際のデータを書き込んだメモリアドレスなど)
> が CPU内の各レジスタにセットされます。
>
> 以下、CPU内のレジスタの値を調べて、実際に結果を表示するのは「int 15h」命
> 令を発行した側のプログラム(ここでは dmesg)の仕事になります。
>
> 割り込みベクタ番号表(Interrupt Jump Table)は
> http://www.ctyme.com/intr/int.htm
> システムサービス(int 15)の種類と実行時のレジスタの値は
> http://www.ctyme.com/intr/int-15.htm
> 機械語レベルでの INT 15h, AX=E820H 命令実行前後の各レジスタの値等は
> http://www.uruk.org/orig-grub/mem64mb.html
> が参考になると思います。
linux-users メーリングリストの案内