Articles of cpu registers

Memoria de progtwigción de ensamblaje Asignación de EAX frente a Ax, AH, AL

Mi comprensión de los registros de ensamblaje indica que se puede acceder a cada registro por todo el código de 32 bits y se divide en múltiples registros accesibles. En este ejemplo, EAX es un registro de 32 bits, si llamamos a AX debería devolver los primeros 16 bits, y si llamamos AH o AL […]

¿Por qué% eax se pone a cero antes de una llamada a printf?

Estoy tratando de recoger un poco de x86. Estoy comstackndo en un mac de 64 bits con gcc -S-O0. Código en C: printf(“%d”, 1); Salida: movl $1, %esi leaq LC0(%rip), %rdi movl $0, %eax ; WHY? call _printf No entiendo por qué% eax se borra a 0 antes de llamar a ‘printf’. Como printf devuelve […]

¿Qué significan los prefijos E y R en los nombres de los registros Intel de 32 bits y 64 bits?

Los nombres de registro de 32 bits comienzan con una E y los de 64 bits comienzan con una R. ¿Qué significan la E y la R? ¿Hay alguna razón para elegir estos alfabetos? Además, en los registros de 64 bits, también, podemos ver en cualquier depurador de bajo nivel como Windbg que los bits […]

¿Para qué está destinado el registro “FS” / “GS”?

Entonces sé lo que se supone que son los siguientes registros y sus usos: CS = Segmento de código (usado para IP) DS = Segmento de datos (usado para MOV) ES = Segmento de destino (usado para MOVS, etc.) SS = Segmento de stack (usado para SP) Pero, ¿para qué se utilizan los siguientes registros? […]

¿Cómo imprimo un número entero en la Progtwigción de nivel de ensamblaje sin printf de la biblioteca c?

¿Alguien puede decirme el código de ensamblaje para mostrar el valor en un registro en formato decimal? Por favor, no sugiera usar el truco printf y luego comstackr con gcc. Descripción: Bueno, investigué un poco y experimenté con NASM y pensé que podría utilizar la función printf de la biblioteca c para imprimir un entero. […]

Intereting Posts