Preguntas con la etiqueta [assembly]

Lista assembly 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,

El punto de prueba %eax %eax [duplicado]

5
respuestas
219
votos
276.5k
vistas

Posible duplicado: ensamblaje x86: ¿'testl' eax contra eax? Soy muy nuevo en la programación en lenguaje ensamblador y actualmente estoy intentando leer el lenguaje ensamblador generado a partir de un

Este bucle se ejecuta en una iteración cada 3 ciclos en Intel Conroe/Merom, con un cuello de botella en imulel rendimiento como se esperaba. Pero en Haswell/Skylake, se ejecuta en

Tengo problemas para señalar una dirección y escribir, en mi caso, una variable de tamaño de byte. Esto me da el error "error: dirección efectiva no válida": mov byte[AX], byte

Usando este ejemplo proveniente de Wikipedia, en el que DrawSquare()se llama DrawLine(): (Tenga en cuenta que este diagrama tiene direcciones altas en la parte inferior y direcciones bajas en la

Leer el contador del programa directamente

7
respuestas
36
votos
29.4k
vistas

¿Se puede leer el contador del programa en las CPU Intel directamente (es decir, sin "trucos") en modo kernel o en algún otro modo?

addiu $6,$6,5 bltz $6,$L5 nop ... $L5: ¿Cómo es esto seguro sin detenerse, algo que el MIPS clásico ni siquiera podía hacer, excepto en caso de fallo de caché? (MIPS

Estaba ayudando a un amigo mío a depurar su programa y lo redujimos a un problema que ocurre incluso aquí: .MODEL small .STACK 16 .CODE start: mov ax, 044c0h mov

Pensé que había cero. Pero veo aquí Las instrucciones con dos operandos de memoria son extremadamente raras. No encuentro nada que explique qué instrucciones, aunque raras, existen. ¿Cuáles son las

¿Cuál es la diferencia entre código objeto, código máquina y código ensamblador? ¿Puedes dar un ejemplo visual de su diferencia?

¿Qué es una retpolina y cómo funciona?

3
respuestas
282
votos
97.5k
vistas

Para mitigar la divulgación de memoria del kernel o entre procesos (el ataque Spectre ), el kernel de Linux 1 se compilará con una nueva opción , -mindirect-branch=thunk-externintroducida para gccrealizar

Soy nuevo en cosas de bajo nivel, por lo que no tengo ni idea de qué tipo de problemas podrías enfrentar allí y ni siquiera estoy seguro de entender bien

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

Estoy escribiendo código AVX y necesito cargarlo desde una memoria potencialmente no alineada. Actualmente estoy cargando 4 dobles , por lo tanto usaría la instrucción intrínseca _mm256_loadu_pd ; el código