Articles of x86

Lenguaje ensamblador – ¿Cómo hacer Modulo?

¿Hay algo así como un módulo operador en x86 Assembler?

Asamblea x86 en una Mac

¿Alguien sabe de alguna buena herramienta (estoy buscando IDE) para escribir el ensamblaje en la Mac? Xcode es un poco engorroso para mí. Además, en los Intel Macs, ¿puedo usar el asm genérico x86? ¿O hay un conjunto de instrucciones modificado? Cualquier información sobre la publicación de Intel. Además, sé que en Windows, asm puede […]

Dibujar un personaje en la memoria VGA con GNU C inline assembly

Estoy aprendiendo a hacer una progtwigción VGA de bajo nivel en DOS con C y ensamblaje en línea. En este momento estoy tratando de crear una función que imprima un personaje en la pantalla. Este es mi código: //This is the characters BITMAPS uint8_t characters[464] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x50, 0x50,0x00,0x00,0x00,0x00,0x00,0x50,0xf8,0x50,0x50,0xf8,0x50,0x00,0x20,0xf8,0xa0, 0xf8,0x28,0xf8,0x00,0xc8,0xd0,0x20,0x20,0x58,0x98,0x00,0x40,0xa0,0x40,0xa8,0x90, 0x68,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x40,0x40,0x40,0x20,0x00, 0x20,0x10,0x10,0x10,0x10,0x20,0x00,0x50,0x20,0xf8,0x20,0x50,0x00,0x00,0x20,0x20, 0xf8,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x40,0x00,0x00,0x00,0xf8,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x08,0x10,0x20,0x40,0x80, 0x00,0x70,0x88,0x98,0xa8,0xc8,0x70,0x00,0x20,0x60,0x20,0x20,0x20,0x70,0x00,0x70, […]

¿Por qué es importante romper la “dependencia de salida” de LZCNT?

Al hacer una evaluación comparativa de algo, medí un rendimiento mucho más bajo de lo que había calculado, que reduje a la instrucción LZCNT (también ocurre con TZCNT), como se demuestra en los siguientes puntos de referencia: xor ecx, ecx _benchloop: lzcnt eax, edx add ecx, 1 jnz _benchloop Y: xor ecx, ecx _benchloop: xor […]

Impresión de dígitos hexadecimales con ensamblaje

Estoy tratando de aprender el ensamblado de NASM, pero parece que estoy luchando con lo que parece simplemente en los lenguajes de alto nivel. Todos los libros de texto que estoy usando discuten usando cuerdas, de hecho, esa parece ser una de sus cosas favoritas. Imprimiendo hola mundo, cambiando de mayúscula a minúscula, etc. Sin […]

¿Qué hace NOPL en el sistema x86?

¿Cuál es la función de NOPL en la máquina x86? Parece que no hace nada, pero ¿por qué siempre está en el código de ensamblaje?

¿Cuál es la forma más rápida de convertir float a int en x86?

¿Cuál es la forma más rápida que sabe de convertir un número de punto flotante a un int en una CPU x86? Preferiblemente en C o en conjunto (que puede estar alineado en C) para cualquier combinación de lo siguiente: Flotador de 32/64/80 bits -> entero de 32/64 bits Estoy buscando alguna técnica que sea […]

¿Puede x86 reordenar una tienda estrecha con una carga más amplia que la contiene por completo?

El Manual del desarrollador de software Intel® 64 e IA-32 Architectures dice: 8.2.3.4 Las cargas pueden reordenarse con tiendas anteriores en diferentes ubicaciones El modelo de ordenamiento de memoria Intel-64 permite reordenar una carga con una tienda anterior a una ubicación diferente. Sin embargo, las cargas no se reordenan con las tiendas en la misma […]

¿Qué significa “DS: ” en el ensamblaje?

0040103A CALL DWORD PTR DS:[40207A] USER32.MessageBoxA ¿Qué significa DS: 😕

Cambiar el modo de redondeo de coma flotante

¿Cuál es la forma más eficiente de cambiar el modo de redondeo * de los números de punto flotante IEEE 754? Una función C portátil sería agradable, pero una solución que usa ensamblaje x86 también está bien. * Me refiero a los modos de redondeo estándar de hacia el más cercano, hacia cero, y hacia […]