Resultados de la búsqueda a petición "inline-assembly"

1 la respuesta

Comportamiento inesperado de ASM en línea de GCC (variable superpuesta)

En mi computadora, el ejecutable compilado omite ejecutar "mov% 2, %% ax" en la parte superior del bucle cuando "agregar% 1, %% ax" no está comentado. ¿Alguien para verificar o comentar? #include <stdio.h> int main() { short unsigned result, ...

8 la respuesta

Leyendo un valor de registro en una variable C

Recuerdo haber visto una forma de usar el ensamblaje en línea de gcc extendido para leer un valor de registro y almacenarlo en una variable C. No puedo pensa...

1 la respuesta

gcc, montaje en línea: ¿falta pushad / popad?

Cualquier forma de evitar tener que copiar y pegarpushad/popad cuerpo de instrucciones en mi código? Porque gcc (banderas actuales:-Wall -m32) se queja de que __asm__("pushad;");Error: no hay tal instrucción: `pushad ' __asm__("popad;");Error: ...

1 la respuesta

¿Cómo acceder a estructuras / variables de C desde asm en línea?

Considere el siguiente código: int bn_div(bn_t *bn1, bn_t *bn2, bn_t *bnr) { uint32 q, m; /* Division Result */ uint32 i; /* Loop Counter */ uint32 j; /* Loop Counter */ /* Check Input */ if (bn1 == NULL) return(EFAULT); if (bn1->dat == NULL) ...

2 la respuesta

Implementando un matcher para la expresión regular '[ab] [^ r] + r]' en el ensamblaje

Necesito ayuda con mi código de ensamblaje. Necesito usar el código de escritura, que encontrará el rango, que se adapte a mi expresión regex. Mi expresión regular:[ab][^r]+r, así que primero estoy buscando si hay 'a' o 'b' y salto a la sección ...

2 la respuesta

El ensamblaje en línea de c obtiene un "desajuste de tamaño de operando" cuando se usa cmpxchg

Estoy tratando de usar cmpxchg con ensamblaje en línea a través de c. Este es mi código: static inline int cas(volatile void* addr, int expected, int newval) { int ret; asm volatile("movl %2 , %%eax\n\t" "lock; cmpxchg %0, %3\n\t" "pushfl\n\t" ...

3 la respuesta

Convertir código de ensamblaje en línea a C ++

Estoy trabajando en un proyecto cpp. El proyecto necesita ser migrado a 64 bits. Contiene algún código de ensamblaje en línea que no se puede compilar en x64...

1 la respuesta

¿Cómo le digo a GCC asm que un registro de entrada está bloqueado?

Estoy tratando de hacer una multiplicación 64 = 32x32 a través de x86mul instrucción, pero solo necesito la palabra alta del resultado (eledx registro). Entonces, naturalmente, intenté enumeraredx como un registro de salida yeax como un registro ...

1 la respuesta

ejecutar ensamblado dentro de una función en c ++

long getesp() { __asm__("movl %esp,%eax"); } void main() { printf("%08X\n",getesp()+4); } ¿por qué el esp apunta al valor antes de configurar el marco de la pila y hace alguna diferencia entre el código a continuación? void main() { ...

1 la respuesta

El extraño operando 'asm' tiene un error de restricciones imposibles

Estoy intentando compilar un programa C simple (Win7 32bit, Mingw32 Shell y GCC 5.3.0). El código C es así: #include <stdio.h> #include <stdlib.h> #define _set_tssldt_desc(n,addr,type) \ __asm__ ("movw $104,%1\n\t" \ :\ :"a" (addr),\ "m" ...