6 Stimmen

FS anmelden in Win32

Ich lese gerade, wie SEH in Win32 implementiert ist, und bin dabei auf diese Sache namens des FS-Registers gestoßen. Ich habe nichts Gutes auf Google gefunden (wahrscheinlich suche ich vielleicht nach dem falschen Begriff). Kann mir also jemand erklären, was es ist?

12voto

Jerry Coffin Punkte 452852

Es handelt sich um ein Segmentregister. Der x86 verfügt über sechs davon: CS, DS, ES, SS, FS und GS (FS und GS wurden neu im Jahr 80386). Die Mnemonics stammen von ihren Rollen: Code-Segment, Daten-Segment, erweitertes Segment (eigentlich ein Hilfsregister), Stapel-Segment. Diese Rollen sind in der Semantik der x86-Assembly-Anweisungen fest verdrahtet. FS und GS sind wie ES Hilfsregister, daher tragen sie einfach die nachfolgenden Buchstaben nach E.

Im 32-Bit-Schutzmodus, wie er typischerweise verwendet wird (z.B. in Windows, Linux, * BSD), haben CS, DS, ES und SS alle eine Basis von 0 und ein Limit von 4 Gigabyte, und der Speicherschutz erfolgt nur mit Seitengenehmigungen. FS zeigt in Benutzermodus auf einen Thread-Information-Block (TIB) und in Kernelmodus auf die Prozesskontrollregion (KPCR). Matt Pietrek schrieb vor Jahren einen ziemlich guten Artikel dazu, der immer noch auf MSDN verfügbar ist.

0 Stimmen

Was bedeuten sie? wie CS bedeutet Code-Segment. Was ist FS und GS?

0 Stimmen

Und wenn SS ein Stapelsegment ist, zeigt ESP dann auf einen Bereich in SS?

2 Stimmen

@hab: Nach meinem Wissen bedeuten sie nicht wirklich etwas - sie hatten bereits C, D und E, also als sie mehr hinzufügten, verwendeten sie F und G, aber es scheint nicht, dass sie etwas Bestimmtes im Sinn hatten, worauf sie stehen könnten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X