Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Martin Erhardt am 08. July 2012, 13:47

Titel: Wie ist ein GDT Eintrag WIRKLICH aufgebaut?
Beitrag von: Martin Erhardt am 08. July 2012, 13:47
Moin,
So sieht ein GDT Eintrag nach dem Wiki aus
0    Limit    0-7
1    Limit    8-15
2    Base    0-7
3    Base    8-15
4    Base    16-23
5    Accessbyte    0-7 (vollständig)
6    Flags    0-3 (vollständig)
6    Limit    16-19
7    Base    24-31
Der Beispielfunktion set_entry() nach sähe sie aber so aus:
0    Limit    0-7
1    Limit    8-15
2    Base    0-7
3    Base    8-15
4    Base    16-23
5    Flags    0-7
6    Limit    16-19
6    Flags    0-3
7    Base    24-31
Nun Es wäre gut zu wissen was jetzt stimmt
Titel: Re: Wie ist ein GDT Eintrag WIRKLICH aufgebaut?
Beitrag von: Jidder am 08. July 2012, 15:43
Beides ist korrekt. Der einzige Unterschied ist in den Bezeichnern (Accessbyte vs. Flags) und dass in der Tabelle die Reihenfolge von Limit (16-19) und Flags (0-3) nicht eindeutig angegeben ist. Dafür ist da allerdings ein Bild drunter.

Im Zweifelsfall einfach das Intel oder AMD Manual befragen.
Titel: Re: Wie ist ein GDT Eintrag WIRKLICH aufgebaut?
Beitrag von: Martin Erhardt am 08. July 2012, 18:05
Vielen dank, aber eine gewisse Unklarheit bestand durchaus: Laut wiki gehört das drittletzte Nibble zum segment limit aber laut der funktion das viert letzte. Aber ich glaube der set_entry Variante. Wenn die nicht stimmte, würde LOST nicht funktionieren
Titel: Re: Wie ist ein GDT Eintrag WIRKLICH aufgebaut?
Beitrag von: Jidder am 08. July 2012, 19:06
Ja wie gesagt, die Tabelle im Wiki ist nicht eindeutig. Die Tabelle macht keine Aussage darüber, welches Nibble das drittletzte oder viertletzte ist.

Das Problem ist ja, ob man das most-significant bit in einem Byte vorne oder hinten schreibt. Das machen die Leute durchaus unterschiedlich. Die einen orientieren sich an Zahlen und schreiben das MSB nach vorne, und die anderen orientieren sich an den Indizes der Bits, und schreiben das LSB als erstes. Und davon ist dann auch abhängig, ob man das niederwertige Nibble zuerst schreibt oder das höherwertige.