32 ビット プロセッサのセグメント記述子と比較して、物理アドレス計算用の 8088 のセグメント オフセット ペアの違いを理解するのに少し混乱しています。
どんな説明でも大歓迎です。
32 ビット プロセッサのセグメント記述子と比較して、物理アドレス計算用の 8088 のセグメント オフセット ペアの違いを理解するのに少し混乱しています。
どんな説明でも大歓迎です。
16 ビット CPU は 64kB のメモリしかアドレス指定できませんでした。メモリ範囲を拡張するために、基本的に pchyscak の使用可能なメモリ内の 64KB ウィンドウのベース アドレスを定義するセグメントが導入されました。
このようなポインターが指している物理アドレスを取得するには、セグメント値に 10h (16) を掛けて、オフセット アドレスを加算する必要があります。すなわち。次のような住所がある場合
145A:67B1
145A0 (+10h or << 4)
+ 67B1
------
1AD51 <- Physical memory address
プロテクト モード記述子は、このようなセグメントに似ていますが、追加情報があります。最大 1 ~ 64 KB (x286) の長さで、特権レベルとプレゼンスに関する情報があります。特権レベルは、OS をより安全にし、ユーザー空間から独立させるために使用されます。プレゼンス フラグは仮想メモリ用です。
386 では、セグメントが最大 1MB になるように範囲が拡張され、セグメントが 4096 ブロックの倍数になるように粒度が追加され、セグメント サイズが最大 4GB に拡張されました。
記述子のもう 1 つのプロパティは、セグメントを 16 ビット モードまたは 32 ビット モードに設定することです。これにより、16 コードは引き続き機能します。