He buscado en Internet, pero no he podido encontrar un ejemplo claro para entender qué hace esta instrucción. Entonces, si alguien puede dar un ejemplo sobre esto, será muy útil para mí.¿Qué hace la instrucción movsbl?
Respuesta
Mover con signo extender desde el byte a la palabra larga. En sintaxis Intel, el mnemónico de esta instrucción es MOVSX.
Un compilador de C puede usar esta instrucción cuando una variable de tipo int8_t
debe convertirse a int
, lo que ocurre automáticamente en aritmética y en algunas otras operaciones (promoción entera).
Dado que esta instrucción escribe en los 32 (o 64) bits del registro de destino, evita penalizaciones de rendimiento que pueden resultar de escribir solo en los 8 bits (o 16) bajos de un registro. Un conjunto similar de instrucciones permite extender con cero bits (MOVZX en sintaxis Intel, MOVZst en AT & sintaxis T (del tamaño s al tamaño t)).
Suponiendo que se trata de AT & T sintaxis de ensamblaje para IA32 (i386/x86_64) significa MOV con Sign-extension de Byte a Long. Es decir, es equivalente a MOVSX r32, r/m8
ver 3-730 Vol. 2A.
web Arriba golpe para movsbl
es this page, y si la búsqueda de movsbl
Dice
MOVSBL and MOVZBL
* MOVSBL sign-extends a single byte, and copies it into a
double-word destination
* MOVZBL expands a single byte to 32 bits with 24 leading
zeros, and copies it into a double-word destination
Example:
%eax = 0x12345678
%edx = 0xAAAABBBB
MOVB %dh, %al %eax = 0x123456BB
MOVSBL %dh, %eax %eax = 0xFFFFFFBB
MOVZBL %dh, %eax %eax = 0x000000BB
Parece que un ejemplo bastante claro para mí. Para ver más ejemplos, lea la página que viene a continuación.
Suponiendo que está hablando de x86, la instrucción MOVSBL amplía un byte (8 bits) que representa un número firmado a un número firmado de 32 bits. Los 24 bits restantes son ceros o unos dependiendo del signo, de modo que el valor de complemento de los dos permanece.
Es decir, si tiene un número negativo, los 24 bits superiores serán 1s, de lo contrario serán ceros.
El equivalente para números sin signo es MOVZBL, que se extiende siempre con 0s.
- 1. ¿Qué hace la instrucción de ensamblaje LEAL?
- 2. ¿Qué hace la instrucción de montaje ORG?
- 3. ¿Qué hace exactamente la instrucción BEQ?
- 4. ¿Qué hace la instrucción MySQL USING junto con DELETE?
- 5. JavaScript ¿Condición de instrucción sin operador? ¿Qué hace?
- 6. ¿Qué significa la instrucción `test`?
- 7. ¿Qué hace sp_tablecollations_100?
- 8. ¿Qué es exactamente la instrucción PHI hace y cómo usarlo en LLVM
- 9. ¿Qué hace la instrucción MOVZBL en IA-32 sintaxis de AT & T?
- 10. ¿Qué hace la copia hg?
- 11. ¿Qué hace la función invisible()?
- 12. ¿Qué hace la bandera permisiva?
- 13. ¿Qué significa la instrucción "(void) startGuardBegin;" do?
- 14. ¿Qué hace [:]?
- 15. ¿Qué hace (+) en Oracle SQL?
- 16. MIPS "la" pseudo instrucción
- 17. ¿Qué significa la instrucción "On Error Resume Next"?
- 18. ¿Por qué no es verificable la instrucción jmp del CLR?
- 19. ¿Qué hace Class.getName() para una clase determinada?
- 20. ¿Qué hace la precompilación de un JDBC PreparedStatement?
- 21. ¿Qué es una instrucción privilegiada?
- 22. ¿Qué es una instrucción JVM?
- 23. ¿Qué significa el método `close()` de la instrucción Mysqli?
- 24. ¿Por qué hace esto lo que hace?
- 25. ¿Qué hace offsetLeftAndRight() exactamente?
- 26. HttpWebRequest.UserAgent: ¿Qué hace?
- 27. Qué hace la estrella WPF (Ancho = "100 *")
- 28. ¿Qué hace la directiva de uso, exactamente?
- 29. ¿Qué hace la bandera del enlazador -toda_carga?
- 30. ¿Qué hace la función cvWaitKey() de OpenCV?
Hay más de una instrucción de ensamblaje establecida ... ¿con cuál te enfrentas? x86? MIPS? PPC? ¿BRAZO? etc ... etc ... etc.? –
Creo que es ia32. – sarslanhan
Y MOVZBL a cero extender: http://stackoverflow.com/questions/9317922/what-does-the-movzbl-instruction-do-in-ia-32-att-syntax?lq=1 –