• Domingo 22 de Diciembre de 2024, 08:32

Autor Tema:  Operaciones En Coma Flotante  (Leído 2252 veces)

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Operaciones En Coma Flotante
« en: Domingo 29 de Febrero de 2004, 21:26 »
0
Hola.

He hecho dos pequeñas funciones en C++ con ensamblador. Se comportan igual, dividiendo f1 entre f2 y retornando el resultado. El código es éste:


Código: Text
  1.  
  2.     inline float ASM_Test(const float f1, const float f2)
  3.     {
  4.   float f3;
  5.   __asm {
  6.     fld f1
  7.     fld f2
  8.     fdivp st(1),st
  9.     fstp f3
  10.   }
  11.   return f3;
  12.     }
  13.  
  14.     inline float ASM_Test2(const float f1, const float f2)
  15.     {
  16.   float f3;
  17.   __asm {
  18.     fld f1
  19.     fdiv f2
  20.     fst f3
  21.   }
  22.   return f3;
  23.     }
  24.  
  25.  

La única diferencia es que la primera deja la pila como estaba y la segunda no lo hace, aunque son menos instrucciones. ¿Es necesario dejar la pila como estaba?

Un saludo.

Ruben3d

deldar

  • Miembro activo
  • **
  • Mensajes: 93
    • Ver Perfil
Re: Operaciones En Coma Flotante
« Respuesta #1 en: Lunes 19 de Abril de 2004, 16:15 »
0
Cuando estes trabajando en lenguaje ensamblador es una buena costumbre que: a la salida-retorno de una funcion-procedimiento todo salvo los datos que se querian modificar queden intactos.

Para ser claro la pila intacta porque en ocasiones se puede dar un uso muy variado y al mantener valores no esperados en ella se pueden dar errores de ejecución, por ejemplo: en la pila estaba la dirección de retorno al Main(). Al mantener un valor extraño ..."ups" la direccion no se corresponde ... "ups" la maquina ejecuta instrucciones incoherentes... "ups" maquina colgada. (generalmente no es para tanto pero ojo)
Quien de verdad sabe de qué habla, no encuentra razones para levantar la voz.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Operaciones En Coma Flotante
« Respuesta #2 en: Lunes 19 de Abril de 2004, 16:39 »
0
Gracias por la respuesta. Lo tendré en cuenta cuando haga este tipo de funciones.

Un saludo.

Ruben3d