AT互換機でのメモリマップ † //来自<30天自制操作系统> 但是我发现内存分布只有3M
- PCIデバイスとかPCカードとかを使うときに、空いている空間を確認したいこともあるだろうということで・・・
- 0x00000000 - 0x0009ffff : RAM
- AT互換機では、この部分がフル実装されていないものはない? -- ATになったのって、286マシンからでしたっけ?(こめんと欄参照)
- 0x000a0000 - 0x000bffff : ビデオアクセス用アドレス空間
- 0x000c0000 - 0x000c7fff : ビデオBIOS?
- 0x000c8000 - 0x000dffff : 各種カードのROMがあったりなかったり?
- 0x000d0000 - 0x000dffffはたいてい空いている
- 0x000e0000 - 0x000effff : 拡張BIOS(ここが空いている場合もある?)
- 0x000f0000 - 0x000fffff : BIOS
- 0x00100000 - 0x00efffff : RAM (これに満たない可能性もある)
- 0x00f00000 - 0x00ffffff : RAMもしくはISAホール(どちらになるかはBIOSの設定などによる)
- 286の場合は、0x00fffff0からの16バイトにリセットジャンプ命令もあると思われる
- 0x01000000 - メモリが尽きるまで : RAM
- メモリが尽きたところ - 0xffffffef : PCIデバイスなどのメモリマップトI/Oに利用可能な領域
- やっぱり0xfffff000からはBIOSのミラーがあって、利用できないのかな?
- 0xfffffff0 - 0xffffffff : 386以降ではここにリセットジャンプ命令がある
ソフトウェア的用途区分 †
- 0x00000000 - 0x000003ff : リアルモード用INTベクタ
- もちろんこれはIDTを変更すれば変更できるが、とりあえず標準的にはこのアドレスが使われる。
- 0x00000300 - 0x000003ffはBIOS用スタック?
- 0x00000400 - 0x000004ff : BIOS用ワークエリア?
- 0x00007c00 - 0x00007dff : ブートセクタが読み込まれるアドレス
- 0x0009fc00 - 0x0009ffff : ACPI用ワークエリア(の場合がある)
- 0x0009fc00から始まっているという保障は全くない。本来ならBIOSに問い合わせるべき。個人的には最悪でも0x0009efffまでは勝手に使っても平気なんじゃないかと思ってはいる。--K
- っていうか、僕はこれを無視してこの辺を好き勝手に使っているような気が・・・。大丈夫なのか?OSASK!
- ISAホールがなければ、16bit-PCICで利用可能なメモリ領域は、0x000c8000~0x000dffffのどこかになるでしょう。
ソフトウェア的用途区分 †
- 0x00000000 - 0x000003ff : リアルモード用INTベクタ
- もちろんこれはIDTを変更すれば変更できるが、とりあえず標準的にはこのアドレスが使われる。
- 0x00000300 - 0x000003ffはBIOS用スタック?
- 0x00000400 - 0x000004ff : BIOS用ワークエリア?
- 0x00007c00 - 0x00007dff : ブートセクタが読み込まれるアドレス
- 0x0009fc00 - 0x0009ffff : ACPI用ワークエリア(の場合がある)
- 0x0009fc00から始まっているという保障は全くない。本来ならBIOSに問い合わせるべき。個人的には最悪でも0x0009efffまでは勝手に使っても平気なんじゃないかと思ってはいる。--K
- っていうか、僕はこれを無視してこの辺を好き勝手に使っているような気が・・・。大丈夫なのか?OSASK!
- ISAホールがなければ、16bit-PCICで利用可能なメモリ領域は、0x000c8000~0x000dffffのどこかになるでしょう。