Resultados de la búsqueda a petición "inline-assembly"
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, ...
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...
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: ...
¿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) ...
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 ...
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" ...
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...
¿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 ...
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() { ...
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" ...