Segmentdeskriptor - Segment descriptor

Bei der Speicheradressierung für Intel x86- Computerarchitekturen sind Segmentdeskriptoren Teil der Segmentierungseinheit, die zum Übersetzen einer logischen Adresse in eine lineare Adresse verwendet wird. Segmentdeskriptoren beschreiben das Speichersegment, auf das in der logischen Adresse Bezug genommen wird. Der Segmentdeskriptor (8 Byte lang in 80286 und höher) enthält die folgenden Felder:

  1. Eine Segmentbasisadresse
  2. Das Segmentlimit, das die Segmentgröße angibt
  3. Zugriffsrechtsbyte mit den Informationen zum Schutzmechanismus
  4. Steuerbits

Struktur

Der x86- und x86-64-Segmentdeskriptor hat die folgende Form:

31 - - 24 23 22 21 20 19 - - 16 15 14 13 12 11 10 9 8 7 - - 0
Basisadresse [31:24] G D / B. L. AVL Segmentlimit [19:16] P. DPL 1 Art C / E. R / W. EIN Basisadresse [23:16]
Basisadresse [15: 0] Segmentlimit [15: 0]

Wo die Felder stehen für:

Basisadresse
32-Bit-Startspeicheradresse des Segments
Segmentlimit
20 Bit Länge des Segments. (Insbesondere die Adresse der zuletzt zugänglichen Daten, sodass die Länge um eins höher ist als der hier gespeicherte Wert.) Wie genau dies interpretiert werden soll, hängt von anderen Bits des Segmentdeskriptors ab.
G = Granularität
Wenn dies klar ist, wird der Grenzwert in Byteeinheiten mit maximal 2 bis 20 Byte angegeben. Wenn festgelegt, liegt das Limit in Einheiten von 4096-Byte-Seiten für maximal 2 32 Byte.
D = Standardoperandengröße
Wenn dies klar ist, handelt es sich um ein 16-Bit-Codesegment. Wenn gesetzt, ist dies ein 32-Bit-Segment.
B = groß
Wenn festgelegt, wird die maximale Versatzgröße für ein Datensegment auf 32-Bit 0xffffffff erhöht. Ansonsten ist es das 16-Bit-Maximum 0x0000ffff. Im Wesentlichen die gleiche Bedeutung wie "D".
L = lang
Wenn gesetzt, ist dies ein 64-Bit-Segment (und D muss Null sein), und der Code in diesem Segment verwendet die 64-Bit-Befehlscodierung. "L" kann nicht gleichzeitig mit "D" oder "B" eingestellt werden.
AVL = Verfügbar
Für die Verwendung mit Software, nicht von Hardware verwendet
P = vorhanden
Wenn diese Option deaktiviert ist, wird für jeden Verweis auf dieses Segment eine Ausnahme "Segment nicht vorhanden" generiert
DPL = Deskriptor-Berechtigungsstufe
Berechtigungsstufe (Ring) erforderlich, um auf diesen Deskriptor zuzugreifen
Art
Wenn gesetzt, ist dies ein Codesegmentdeskriptor. Wenn klar, ist dies ein Daten- / Stapelsegmentdeskriptor, bei dem "D" durch "B", "C" durch "E" und "R" durch "W" ersetzt sind. Dies ist in der Tat ein Sonderfall des 2-Bit-Typfelds, in dem das vorhergehende Bit 12, das als "0" gelöscht wurde, auf mehr interne Systemdeskriptoren für LDT, LSS und Gates verweist.
C = konform
Code in diesem Segment kann von weniger privilegierten Ebenen aufgerufen werden.
E = Expand-Down
Wenn diese Option deaktiviert ist, wird das Segment von der Basisadresse bis zur Basis + Grenze erweitert. Wenn diese Option aktiviert ist, wird sie vom maximalen Versatz bis zum Grenzwert erweitert, ein Verhalten, das normalerweise für Stapel verwendet wird.
R = Lesbar
Wenn dies klar ist, kann das Segment ausgeführt, aber nicht gelesen werden.
W = Beschreibbar
Wenn dies klar ist, kann das Datensegment gelesen, aber nicht beschrieben werden.
A = Zugriff
Dieses Bit wird von der Hardware beim Zugriff auf das Segment auf 1 gesetzt und von der Software gelöscht.

Siehe auch

Verweise

  • Tabak, Daniel. Erweiterte Mikroprozessoren . McGraw Hill und Co.
  • Hall, Douglas. Mikroprozessoren und Schnittstellen . McGraw Hill Publications.

Weiterführende Literatur

Externe Links