Come è il registro segmento implicita di un puntatore vicino determinato?
-
04-10-2019 - |
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?
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 registroEDI
) registro di segmento - accessi alla memoria utilizzando il registro
EBP
come registro 'indirizzo di base' utilizzerà il registro di segmentoSS
. Tuttavia, se il registroEBP
viene utilizzato come registro indice in scala, il segmento utilizzato saràDS
(a meno che il registro di indirizzo di base èESP
)