Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ensamblador MMX

Estas en el tema de Ensamblador MMX en el foro de Programación General en Foros del Web. Hola, ¿Alguien que sepa ensamblador con extensiones MMX?. Es que tengo un problema con un programa. Tengo que hacer una división de dos vectores: A(i)/B(i). ...
  #1 (permalink)  
Antiguo 08/02/2005, 14:57
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Ensamblador MMX

Hola, ¿Alguien que sepa ensamblador con extensiones MMX?. Es que tengo un problema con un programa. Tengo que hacer una división de dos vectores: A(i)/B(i). Los vectores contienen enteros con signo de 1 byte, por lo que en un registro MMx caben 8 componentes del vector. El problema es que al no haber una instruccion de división en el repertorio MMX tengo que hacerlo mediante restas sucesivas, hasta ahi no habria problema de no ser porque son números con signo. ¿Alguna idea de como lo podria hacer?. Tenía pensado calcular el valor absoluto de los valores negativos mediante una multiplicación por -1 y tras la división añadirle el signo a las componentes que debieran ser negativas, pero tampoco hay ninguna instrucción de multiplicación a nivel de 8 bits. Cualquier aporte me sera de gran ayuda. Gracias y un saludo.
  #2 (permalink)  
Antiguo 08/02/2005, 15:03
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
http://www.x86.org/ << processor manual << mmx specification

http://www.cpuid.com/mmx.php
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 09/02/2005, 10:54
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola, muchas gracias, ya he resuelto el problema, me costo lo mio pero ya tengo el programita. Ahora me surge una duda. Necesito calcular el tiempo de ejecución que emplea la rutina en MMX. He incluido el siguiente fragmento de código:

/* Algoritmo en MMX */
ini=clock();
resultadoMMX=OperacionMMX(tamano);
fin=clock();
printf("Resultado MMX= %d - Tiempo MMX= %f ms\n", resultadoMMX, 1000.0*(fin-ini)/CLOCKS_PER_SEC);

Pero me da 0 ms. Multiplico el resultado por un numero todo lo grande que se me ocurre y sigue apareciendome 0.0000 ¿Como podria medir el tiempo de ejecución?. Tener en cuenta que el tiempo sera muy pequeño porque no hay excesivas operaciones ni accesos a memoria.
Gracias.
  #4 (permalink)  
Antiguo 09/02/2005, 11:54
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Ya esta solucionado, clock() no tenia resolucion suficiente para almacenar un cambio de tiempo tan pequeño. Solucion, ejecutar el algoritmo 1000 veces y luego dividir ese valor.
Un saludo!
  #5 (permalink)  
Antiguo 09/02/2005, 12:26
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Podes usar GetTickCount tambien.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:45.