Pregunta

En la sección 4.3 del Intel 64® e IA-32 arquitecturas de software Manual del desarrollador . Volumen 1: Arquitectura básica , que dice:

Un puntero cerca es un desplazamiento de 32 bits ... dentro de un segmento. punteros Cerca se utilizan para todas las referencias de memoria en un modelo de memoria plana o para referencias en un modelo segmentado donde se accede a la identidad del segmento está implícito.

Esto me lleva a preguntarse: ¿cómo está el segmento implícita registro determinado

Sé que (%eip) y (%eip) desplazados (por ejemplo -4(%eip)) direcciones utilizan %cs por defecto, y que las direcciones de (%esp) y (%esp) desplazados utilizan %ss, pero qué sobre (%eax), (%edx), (%edi), (%ebp) etc., y pueden depender de la registro de segmento implícito también en la instrucción de que la dirección de memoria operando aparece en?

¿Fue útil?

Solución

Aparte de CS y SS registro de accesos que usted ha mencionado, la mayoría de los otros accesos utilizarán el registro de segmento DS. Un par de excepciones, que yo recuerde:

  • las instrucciones orientadas cuerdas utilizará el ES para el 'destino' (implícitamente dirigida por el registro EDI) registro de segmento
  • accesos a memoria utilizando el registro EBP como un registro 'dirección base' van a utilizar el registro de segmento SS. Sin embargo, si el registro EBP se usa como un registro de índice a escala, el segmento de utilizar será DS (a menos que el registro de dirección de base es ESP)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top