Last active
December 14, 2015 08:38
-
-
Save bencz/5058955 to your computer and use it in GitHub Desktop.
metodo via assembly para negativar um numero...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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