Preguntas con la etiqueta [x86-64]

Lista x86-64 preguntas

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?

8
respuestas
42
votos
93.8k
vistas

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

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[] =

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

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

1
respuestas
40
votos
22.7k
vistas

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

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

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

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?

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?

0
respuestas
871
votos
900.4k
vistas

Para mí, parece un MOV original. ¿Cuál es su propósito y cuándo debo usarlo?

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

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

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,