Preguntas con la etiqueta [assembly]

Lista assembly preguntas

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) {

La forma general para el direccionamiento de memoria en Intel y AT&T Syntax es la siguiente: [base + index*scale + disp] # Intel, including GAS .intel_syntax noprefix disp(base, index, scale)

Estoy preparando algunos materiales de capacitación en C y quiero que mis ejemplos se ajusten al modelo de pila típico. ¿En qué dirección crece una pila C en Linux, Windows,

.section .data msg1: .asciz "Hello1: %d\r\n" msg2: .asciz "Hello2: %d\r\n" .section .text .global main main: mov r4, #0 .loop: cmp r4, #5 bge .endloop ldr r0, =msg1 mov r1, r4

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

Cómo funciona la entrada almacenada en búfer

3
respuestas
6
votos
11.2k
vistas

La entrada en el siguiente programa (usando la función DOS.BufferedInput 0Ah) funciona bien, pero cuando pido mostrar la salida, DOS no muestra nada en absoluto. ¿Cómo es esto posible? ORG

¿Cómo puedo multiplicar y dividir usando solo el desplazamiento y la suma de bits?

Una de las razones declaradas para conocer el ensamblador es que, en ocasiones, se puede utilizar para escribir código que tendrá más rendimiento que escribir ese código en un lenguaje

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

¿Existe alguna diferencia en la velocidad de ejecución usando el siguiente código? cmp al, 0 je done y lo siguiente: or al, al jz done Sé que las instrucciones JE

imprimir una variable __m128i

4
respuestas
33
votos
39.8k
vistas

Estoy tratando de aprender a codificar usando elementos intrínsecos y a continuación hay un código que suma compiler used: icc #include<stdio.h> #include<emmintrin.h> int main() { __m128i a = _mm_set_epi32(1,2,3,4); __m128i

Tome varias entradas e imprímalas

0
respuestas
0
votos
35
vistas

Este es mi programa: data segment str1 db "What is your name: $" str2 db "How old are you? $" str3 db 13,10, "Name Output is: $" str4 db 13,10,

Puedo insertar 4 bytes en la pila haciendo esto: push DWORD 123 Pero descubrí que puedo usar pushsin especificar el tamaño del operando: push 123 En este caso, ¿cuántos bytes

Muchos métodos que se encuentran en algoritmos de alto rendimiento podrían (y se simplifican) simplificarse si se les permitiera leer una pequeña cantidad más allá del final de los buffers