Domanda

Nel paragrafo 4.3 del Intel 64® e IA-32 Architetture Software Developer Manuale . Volume 1: Architettura di base , si dice:

  

Un puntatore è vicino a un offset a 32 bit ... all'interno di un segmento. Vicino puntatori sono utilizzati per tutti i riferimenti di memoria in un modello di memoria flat o per i riferimenti in un modello segmentato in cui l'identità del segmento a cui si accede è implicita.

Questo mi porta a chiedersi: come è il segmento implicito register determinato

So che (%eip) e (%eip) sfollati (ad es -4(%eip)) indirizzi utilizzano %cs di default, e che gli indirizzi (%esp) e (%esp) sfollati usano %ss, ma per quanto riguarda (%eax), (%edx), (%edi), (%ebp) ecc, e può registrare il segmento implicita dipenderà anche l'istruzione che l'indirizzo di memoria operando appare in?

È stato utile?

Soluzione

Oltre CS e SS registro accessi che lei ha citato, la maggior parte degli altri accessi useranno il registro di segmento DS. Un paio di eccezioni che posso ricordare:

  • le istruzioni stringa orientata utilizzerà il ES per la 'destinazione' (implicitamente indirizzata dal registro EDI) registro di segmento
  • accessi alla memoria utilizzando il registro EBP come registro 'indirizzo di base' utilizzerà il registro di segmento SS. Tuttavia, se il registro EBP viene utilizzato come registro indice in scala, il segmento utilizzato sarà DS (a meno che il registro di indirizzo di base è ESP)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top