2012-05-01 20 views
7

estoy tratando de averiguar lo que las instrucciones de montaje en realidad hace¿Qué significa la siguiente instrucción de ensamblaje suma -8 (% rbp),% xmm0?

addsd -8(%rbp), %xmm0 

Yo sé que es una adición de punto flotante en una máquina x86-64 con SSE2. Además, sé que% xmm0 es un registro. Sin embargo, de lo que no estoy seguro es de lo que significa -8 (% rbp). Los manuales son un poco confusos sobre eso.

Básicamente, la pregunta es, ¿-8 (% rbp) significa que está tomando un valor de un registro (quizás los últimos 8 bytes de rbp) o está tomando un valor de la memoria (valor de coma flotante en un desplazamiento de -8 desde la dirección contenida en rbp).

+2

Su segunda suposición es correcta. Está accediendo al valor en el desplazamiento de bytes '-8' desde la dirección' rbp'. – Mysticial

+0

Hola Mysticial, ¿puedes apuntar a una referencia que explique esto fácilmente? – owagh

+0

Confunde nuevamente la sintaxis de AT & T. – harold

Respuesta

7

Su segunda suposición es correcta. Está accediendo al valor en -8 bytes de desplazamiento desde la dirección rbp.

Suponiendo EN & sintaxis T, esta instrucción carga un 8 bytes de la dirección doublerbp - 8 y lo añade al valor en la mitad inferior de xmm0.

+0

¿Puedes apuntar a una referencia que explique esto fácilmente? La mayoría de los tutoriales y referencias en lenguaje ensamblador están irreconociblemente confundidos (o eso siento, tal vez solo soy yo) – owagh

+0

Estoy tratando de encontrar uno ahora mismo. Pero la cuestión de abordar relativa podría ser un poco básica. – Mysticial

+3

Aquí está: http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax – Mysticial

Cuestiones relacionadas