Articles of Asamblea de

¿Cómo puedo multiplicar los operandos de 64 bits y obtener el resultado de 128 bits de forma portátil?

Para x64 puedo usar esto: { uint64_t hi, lo; // hi,lo = 64bit x 64bit multiply of c[0] and b[0] __asm__(“mulq %3\n\t” : “=d” (hi), “=a” (lo) : “%a” (c[0]), “rm” (b[0]) : “cc” ); a[0] += hi; a[1] += lo; } Pero me gustaría realizar el mismo cálculo de forma portátil. Por ejemplo, para […]

¿Por qué GCC pad funciona con NOPs?

He estado trabajando con C por un tiempo breve y recientemente comencé a ingresar en ASM. Cuando compilo un progtwig: int main(void) { int a = 0; a += 1; return 0; } El desassembly objdump tiene el código, pero nops después del ret: … 08048394 : 8048394: 55 push %ebp 8048395: 89 e5 mov […]

C #: directorio de assembly personalizado

Digamos que tenemos una aplicación que consta de un ejecutable y 5 bibliotecas. Regularmente, todos estos estarán en un directorio y las bibliotecas se cargarán desde allí. ¿Es posible hacerlo para que pueda tener, por ejemplo, algunas de las bibliotecas en un directorio llamado Lib, y el rest en una llamada Lib2? De modo que […]

¿Qué es un buen decomstackdor de C?

Estoy buscando un decomstackdor para un progtwig C. El binario es un ejecutable Linux x86 de 32 bits. Objdump funciona bien, así que básicamente estoy buscando algo que intente reconstruir la fuente C de la fuente asm.

¿El lenguaje ensamblador en línea es más lento que el código nativo de C ++?

Traté de comparar el rendimiento del lenguaje ensamblador en línea y el código C ++, así que escribí una función que agrega dos arreglos de tamaño 2000 por 100000 veces. Aquí está el código: #define TIMES 100000 void calcuC(int *x,int *y,int length) { for(int i = 0; i < TIMES; i++) { for(int j = […]

¿Qué significa alinear la stack?

He sido un codificador de alto nivel, y las architectures son bastante nuevas para mí, así que decidí leer el tutorial sobre la Asamblea aquí: http://en.wikibooks.org/wiki/X86_Assembly/Print_Version ¡Lejos del tutorial, instrucciones sobre cómo convertir Hello World! progtwig #include int main(void) { printf(“Hello, world!\n”); return 0; } en un código de ensamblaje equivalente y se generó lo […]

¿Utiliza GCC para producir un ensamblaje legible?

Me preguntaba cómo usar GCC en mi archivo fuente C para volcar una versión mnemotécnica del código máquina para poder ver en qué se estaba comstackndo mi código. Puede hacer esto con Java, pero no he podido encontrar la manera de hacerlo con GCC. Estoy intentando volver a escribir un método C en el ensamblaje […]