Advertisement
AntonioVillanueva

Multiplicacion en C++ con funcion optimizada en assembler

Dec 23rd, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. /*usa assembler extend con inclusion explicita de la instruccion imul*/
  5. int multiplica(long x, long y, long*destino)
  6. {
  7.  
  8.     unsigned char resultado;
  9.     asm(//Assembler
  10.         "imul %[x],%[y]   # calcula y = x * y\n\t"
  11.         "setae %[b]        # Set resultado"
  12.  
  13.         : [y] "+r" (y), [b] "=r" (resultado) /* Salidas */
  14.         : [x] "r" (x)                      /* Entradas */
  15.  
  16.     );
  17.     *destino = y;
  18.     return (int) resultado;
  19. }
  20.  
  21. int main(){
  22.     long resultado(0);
  23.     multiplica(3,2,&resultado);
  24.     cout <<resultado<<endl;
  25. return 0;
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement