Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: .:UND3R:. en 3 Julio 2012, 03:19 am



Título: Por que esta instrucción (FPU) genera una excepción.
Publicado por: .:UND3R:. en 3 Julio 2012, 03:19 am
Estoy viendo ejemplos de como utilizar la instrucción FWAIT y me dan el siguiente ejemplo de cuando sería útil:

Código
  1. .data
  2. valEnt DWORD 25
  3. .code
  4. fild ValEnt                   ; carga entero en ST(0)
  5. inc valEnt                    ; incrementa el entero

Me dicen que en el ejemplo mostrado se generaría una excepción.

¿Por qué con la instrucción fild ValEnt se produce tal excepción?.

Saludos


Título: Re: Por que esta instrucción (FPU) genera una excepción.
Publicado por: Иōҳ en 3 Julio 2012, 03:56 am
Código
  1. valEnt FLOAT 25.0


Título: Re: Por que esta instrucción (FPU) genera una excepción.
Publicado por: _Enko en 3 Julio 2012, 16:27 pm
Código
  1. valEnt FLOAT 25.0
fild es para INTEGER.
fld para float.


La excepcion se puede producir pero de seguro que el libro es del año 80.

la fpu funciona en paralelo con el cpu.
Entonces puede pasar que la fpu mientras este leyendo el valor valInt la cpu lo esté incrementando... poco probable no se. Pero como no estan sincronizados, puede pasar, nadie te garantiza lo contrario.
En el ejemplo tuyo es poco probable... tendria que haber mas instrucciones de fpu de por medio sin fwait. y luego el inc ValEnt sin fwait.
Lo recomendable es igual, no mezclar instrucciones de la fpu con instrucciones del cpu.
Código:
calculos cpu
calculos fpu
fwait
calculos cpu
De esa manera no hay problemas en ese sentido.

buen tuto
http://www.website.masmforum.com/tutorials/fptute/index.html


Título: Re: Por que esta instrucción (FPU) genera una excepción.
Publicado por: .:UND3R:. en 4 Julio 2012, 01:49 am
Gracias a ambos por la respuesta, me quedo con que por seguridad, al mezclar la FPU con la CPU, debo introducir un FWAIT. Saludos


Título: Re: Por que esta instrucción (FPU) genera una excepción.
Publicado por: Иōҳ en 25 Julio 2012, 03:47 am
Sip tienes razón _Enko no sé como se me pasó u.u

Código
  1. fild dword ptr [valEnt]


Título: Re: Por que esta instrucción (FPU) genera una excepción.
Publicado por: _Enko en 25 Julio 2012, 04:20 am
Sip tienes razón _Enko no sé como se me pasó u.u

Código
  1. fild dword ptr [valEnt]
Ahora iras al infierno y programaras en javascript por una eternidad  >:D