Resultados de la búsqueda a petición "assembly"

3 la respuesta

80x86 asm de 16 bits: lea cx, [cx * 8 + cx] causa un error en NASM (compilando el archivo .com)

El error que da NASM (a pesar de mi sistema operativo operativo) es "dirección efectiva no válida". Ahora he visto muchos ejemplos de cómo usar LEA y creo que lo hice bien, pero a mi NASM no le gusta. Lo intentélea cx, [cx+9] Y funcionó; @lea ...

1 la respuesta

¿Qué registro de segmento se usa por defecto?

Estoy estudiando arquitectura de computadoras del Manual de Intel. Lo que entiendo es que las instrucciones que damos son direcciones lógicas que consisten en un selector de segmento y un desplazamiento. Básicamente esCS register<<4 + offset. ...

6 la respuesta

x86 Instrucción MUL de VS 2008/2010

¿Los encantamientos modernos (2008/2010) de Visual Studio o Visual C ++ Express producen instrucciones MUL x86 (multiplicación sin signo) en el código compilado? Parece que no puedo encontrar o idear un ejemplo donde aparezcan en código ...

1 la respuesta

Alternar un bit específico

Así que he visto las preguntas como alternar un poco con ith positon [https://stackoverflow.com/questions/3681684/toggle-a-bit-at-ith-positon] y ¿Cómo establece, borra y alterna un solo ...

13 la respuesta

Can num++ be atomic for 'int num'

En general, paraint num, num++ (o++num), como una operación de lectura-modificación-escritura, esnot atomic. Pero a menudo veo compiladores, por ejemplo GCC [https://en.wikipedia.org/wiki/GNU_Compiler_Collection], genera el siguiente código para ...

2 la respuesta

¿Por qué los parámetros almacenados en los registros y no en la pila en x86-64 Assembly?

En el ensamblaje x86-32, los parámetros se almacenan en la pila, pero en x86-64, los parámetros se almacenan en registros. ¿Cuál es la razón para esto

2 la respuesta

C unsigned long long e imulq

Como alguien nuevo en el ensamblaje, uso gcc para ingeniería inversa. Pero ahora me encontré con un problema divertido: trato de multiplicar dos enteros de 64 bits para x86-64. El código C tiene el siguiente aspecto: unsigned long long ...

1 la respuesta

Obtener dirección argv [2] en ensamblador x64

edi es argc, rsi es argv 0x0000000000400535 <+8>: mov %edi,-0x4(%rbp) 0x0000000000400538 <+11>: mov %rsi,-0x10(%rbp) aquí obtengo puntero argv (gdb) x/8x $rbp-0x10 0x7ffdb7cac380: 0xb7cac478 0x00007ffd 0x00000000 0x00000003 0x7ffdb7cac390: ...

6 la respuesta

Assembly ADC (Agregar con carry) a C ++

Hay una instrucción de montajeADC. He encontrado que esto significa "Agregar con carry". Pero no sé quées significa. O cómo escribir esta instrucción en C ++. Y sé que no es lo mismo queADD. Por lo tanto, hacer una suma simple no ...

1 la respuesta

¿Por qué printf sobrescribe el registro ECX?

Lo séprintf devuelve el número de caracteres impresos en EAX. Por que esprintf cambio de registro ECX a 0? Mi fragmento de código: push eax push intFormat call printf add esp,8 Estoy ejecutando mi código en una distribución de Linux de 64 bits.