>>771
つまり、>>633のこれはWindows 3.xのことだって話ですすめるわけねw
640Kの壁問題というのは、Windows 3.xまで。Windows 9x/NTでは無いと

> Windowsになってもまだ古いDOSとの互換性維持もあってメインメモリ640Kの壁問題があったからな
> ちなみにXPぐらいまではISAバスサポートもあったのでその辺を全部捨てないとどうしようもなかった

そうすると、なにが「どうしようもなかった」なのか全くわからんが、
ISAバスの話は全く関係なく、どうしようもなかったも間違いで何の問題もないという結論でいいだろう
(なぜならVistaまで確実、おそらく7/8までサポートされていたから)

まずWindows 3.0のシステム要件が8086 / 8088以上であることからもわかるように
Windows 3.xは16bit OS。16bitだから640KB(1MB)までしか扱えないと思っていたら大間違い
そもそも16bitというのは、2の16乗=65536=64KBだからな。640KBの壁にはならない。
16bitのMS-DOSやWindows 3.xは、64KBまでしかメモリを扱えないなんて主張するやつはいないだろ。
現に1MBアクセスできてるんだから

なぜ8086が16bitなのに64KBを超えた1MBアクセスできるのかと言うと、16bitレジスタを
2つ使ってアクセスしていたから。じゃあ32bitなのか?というとそれも違っていて4bitしかずらしていない
0 1 2 3 4 5 6 7 8 9 A B C D E F (16bit)
_ _ _ _ 0 1 2 3 4 5 6 7 8 9 A B C D E F (16bit)
つまり合計20bit。だから1MBまでしかアクセスできない。
MS-DOSは1MB(640KB)の制限とはこのことを指している。

8086 / 8088 から 80286のリアルモードまでは1MBまでしか扱えないのは事実だが
Windows 3.0から対応してる80286のプロテクトモードでは違う。
プロテクトモードでは上の4bitずらして〜なんてやり方をしていない。セグメントディスクリプタを使った
全く違うやり方をしてる。その場合は80286で24bit(16MB)のメモリ空間を持っている。(もちろんバンク切り替えなし)
一言で言えば、Windows 3.0にあるのは16MBの壁(640KBでも1MBでもない)

そしてWindows 3.1ではリアルモードを廃止したので、1MBの壁は完全に存在せず
80386の拡張により32bit(4GB)のメモリ空間になってる。(ただし256MBまでしか対応していないが)