Frage

In Abschnitt 4.3 von Intel 64® und IA-32 Architektur Software Developer Benutzerhandbuch . Band 1: Grund Architektur , heißt es:

A in der Nähe Zeiger ist ein 32-Bit-Offset ... innerhalb eines Segments. Near-Zeiger werden für alle Speicherreferenzen in einem flachen Speichermodell oder für Referenzen in einem segmentierten Modell, bei dem die Identität des Segments verwendet wird, impliziert zugegriffen wird.

Dies führt mich zu fragen: Wie wird das implizierte Segment bestimmt Register

Ich weiß, dass (%eip) und verdrängten (%eip) (zB -4(%eip)) Adressen verwenden %cs standardmäßig und dass (%esp) und verschoben (%esp) Adressen verwenden %ss, aber was ist (%eax), (%edx), (%edi), (%ebp) etc. und kann das implizite Segmentregister abhängen auch auf der Anweisung, dass der Speicheradresse Operanden erscheint in?

War es hilfreich?

Lösung

Anders als CS und SS Registerzugriffe, die Sie erwähnt haben, die meisten anderen Zugängen das DS Segmentregister verwendet wird. Ein paar Ausnahmen, dass ich mich erinnern kann:

  • die Zeichenfolge orientierte Anweisungen die ES für das ‚Ziel‘ verwenden (implizit durch die EDI Register adressiert) Segmentregister
  • greift auf den Speicher der EBP Register als ‚Basisadresse‘ Register verwendet, wird das SS Segmentregister verwenden. Wenn jedoch die EBP Register als ein skaliertes Indexregister verwendet wird, das Segment wird DS verwendet wird (es sei denn, das Basisadressenregister ist ESP)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top