Preguntas con la etiqueta [x86-64]
Después de ingresar _start, ¿está alineado rsp?
Cuando los programas ingresan a la _startrutina al inicio del programa, ¿el puntero de la pila está alineado con un límite de 16 bytes o debe alinearse manualmente? Quiero decir,
¿Qué causa los fallos de página?
Según Wikipedia : Una falla de página es una trampa para el software generada por el hardware cuando un programa accede a una página que está asignada en el espacio
¿Cómo obtener código c para ejecutar código de máquina hexadecimal?
Quiero un método C simple para poder ejecutar código de bytes hexadecimal en una máquina Linux de 64 bits. Aquí está el programa en C que tengo: char code[] =
¿Qué sucede si usa la ABI Linux int 0x80 de 32 bits en código de 64 bits?
int 0x80en Linux siempre invoca la ABI de 32 bits, independientemente del modo desde el que se llame: argumentos en ebx, ecx, ... y números de llamada al sistema desde
¿Se requiere una extensión de signo o cero al agregar un desplazamiento de 32 bits a un puntero para la ABI x86-64?
Resumen: Estaba mirando el código ensamblador para guiar mis optimizaciones y vi muchas extensiones de signo o cero al agregar int32 a un puntero. void Test(int *out, int offset) {
Diferencia entre movq y movabsq en x86-64
Me refiero a instrucciones de movimiento de datos en la arquitectura Intel x86-64. He leído que la movqinstrucción normal solo puede tener operandos de origen inmediatos que pueden representarse como
Las ventajas de utilizar registros/instrucciones de 32 bits en x86-64
A veces, gcc usa un registro de 32 bits, cuando yo esperaría que usara un registro de 64 bits. Por ejemplo el siguiente código C: unsigned long long div(unsigned long
¿Por qué Windows64 utiliza una convención de llamadas diferente a la de todos los demás sistemas operativos en x86-64?
AMD tiene una especificación ABI que describe la convención de llamadas que se utilizará en x86-64. Todos los sistemas operativos lo siguen, excepto Windows, que tiene su propia convención de
¿Cómo puedo determinar si un ensamblado .NET se creó para x86 o x64?
Tengo una lista arbitraria de ensamblados .NET. Necesito verificar mediante programación si cada DLL se creó para x86 (a diferencia de x64 o cualquier CPU). es posible?
¿Por qué el acceso no alineado a la memoria con mapas mm a veces tiene un error de segmentación en AMD64?
Tengo este fragmento de código que genera un error de segmentación cuando se ejecuta en Ubuntu 14.04 en una CPU compatible con AMD64: #include <inttypes.h> #include <stdlib.h> #include <sys/mman.h> int
¿Cuál es el propósito de la instrucción LEA?
Para mí, parece un MOV original. ¿Cuál es su propósito y cuándo debo usarlo?
¿Por qué la ABI x86-64/AMD64 System V exige una alineación de pila de 16 bytes?
He leído en diferentes lugares que se hace por "razones de rendimiento", pero todavía me pregunto cuáles son los casos particulares en los que esta alineación de 16 bytes mejora
¿Ya no se permiten direcciones absolutas de 32 bits en Linux x86-64?
Linux de 64 bits utiliza el modelo de memoria pequeña de forma predeterminada, lo que coloca todo el código y los datos estáticos por debajo del límite de direcciones de
glibc scanf Errores de segmentación cuando se llama desde una función que no alinea RSP
Al compilar el siguiente código: global main extern printf, scanf section .data msg: db "Enter a number: ",10,0 format:db "%d",0 section .bss number resb 4 section .text main: mov rdi,