assembly - ver - sysstat linux
Comando SAR en ensamblaje X86 con un parĂ¡metro (2)
En un programa desensamblado que estoy analizando, encontré el comando
sar %eax
¿Qué hace esto? Sé que sar
con dos argumentos realiza un cambio a la derecha, pero no puedo encontrar lo que significa con un solo parámetro.
Este programa fue compilado para un procesador Intel x86.
Cuando solo hay un operando, el cambio implícito es 1.
Asi que....
SAR %EAX
implica firmado %EAX >> 1
para eso
SAR %eax = SAR $1, %eax
He probado con éxito este análisis de algunos códigos en GDB.
Parece que el disimulador se utilizó de manera corta para SAR EAX,1
que tiene un código de operación de 0xD1F8
. cuando lo inmediato no es 1, también conocido como SAR EAX,xx
, el código de operación es 0xC1F8 xx
, consulte la referencia de instrucciones Intel, vol. 2B, 4-353.