Tendrás que disculparme, soy nuevo para el ensamblaje x86 y el montaje en general.Significado de (% eax) en la sintaxis de AT & T?
Así que mi pregunta es, tengo algo como:
addl %edx,(%eax)
% eax es un registro que contiene un puntero a un entero. Llamémoslo xp
¿Esto significa que está diciendo: *xp = *xp + %edx
? (%edx
es un número entero)
Estoy confundido donde addl almacenará el resultado. Si %eax
es un puntero a un int, entonces (%eax)
debe ser el valor real de ese int. Entonces, ¿addl
almacena el resultado de %edx+(%eax)
en *xp
? ¡Realmente me encantaría que alguien me explique esto!
Realmente aprecio cualquier ayuda!
+1 buena respuesta simple. –
'(% eax)' es "registrar indirectamente", si desea [nombrar diferentes modos de direccionamiento] (https://stackoverflow.com/questions/46257018/do-terms-like-direct-indirect-addressing-mode- actual-existe-en-el-intel-x86-hombre) en absoluto. El direccionamiento "indirecto de la memoria" se produce cuando la CPU carga una dirección de la memoria y luego realiza una desreferencia * que * (x86 no admite el direccionamiento indirecto de la memoria). https://en.wikipedia.org/wiki/Addressing_mode#Memory_indirect –