雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。

AT互換機の場合、搭載されているメモリ全てを好き勝手に使えるわけではない。ある特定の位置のメモリはシステムで予約されているので使ってはいけない。

じゃ、それはどこいらへん???

例によってOS-Wikiの(AT)memorymapのページからパクってきますた。

アドレス用途
0x00000000: RAM。AT互換機では、この部分がフル実装されていないものはない? -- ATになったのって、286マシンからでしたっけ?(こめんと欄参照)
0x0009ffff
0x000a0000ビデオアクセス用アドレス空間
0x000bffff
0x000c0000ビデオBIOS?
0x000c7fff
0x000c8000各種カードのROMがあったりなかったり?
0x000dffff
0x000d0000たいてい空いている
0x000dffff
0x000e0000拡張BIOS(ここが空いている場合もある?)
0x000effff
0x000f0000BIOS
0x000fffff
0x00100000RAM (これに満たない可能性もある)
0x00efffff
0x00f00000RAMもしくはISAホール(どちらになるかはBIOSの設定などによる)
0x00ffffff
0x01000000RAM
メモリが尽きるまで
  • メモリが尽きたところ - 0xffffffef : PCIデバイスなどのメモリマップトI/Oに利用可能な領域
    • やっぱり0xfffff000からはBIOSのミラーがあって、利用できないのかな?
  • 0xfffffff0 - 0xffffffff : 386以降ではここにリセットジャンプ命令がある

ソフトウェア的用途区分 anchor.png Edit

  • 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のどこかになるでしょう。

最終更新: 2024-01-06 (土) 22:39:13 (JST) (82d) by