Skip to content

Instantly share code, notes, and snippets.

@bencz
Last active December 14, 2015 08:38
Show Gist options
  • Save bencz/5058955 to your computer and use it in GitHub Desktop.
Save bencz/5058955 to your computer and use it in GitHub Desktop.
metodo via assembly para negativar um numero...
#include <stdio.h>
int main(int argc, char **argv)
{
int numero = 0;
int retorno = 0;
printf("Entre com um numero: ");
scanf("%d", &numero);
#if defined(__GCC__)
asm("neg %0\n\t": "=a" ( retorno ) : "a" ( numero ));
#elif defined(_MSC_VER)
__asm
{
mov eax, numero
neg eax // Apenas um ciclo da maquina, eba, mais rapido :)
mov retorno, eax
}
#else
asm("neg %0\n\t": "=a" ( retorno ) : "a" ( numero ));
#endif
/*
uma outra forma, mas, a mais lenta, é, ( x *= -1 ) ou tb visto como: ( x = x * -1 );
mov eax, numero
imul eax, -1 ; uma instrução e 3 ciclos da maquina :(
mov retorno, eax
*/
printf("%d\n", retorno);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment