Estoy viendo ejemplos de como utilizar la instrucción FWAIT y me dan el siguiente ejemplo de cuando sería útil:
.data
valEnt DWORD 25
.code
fild ValEnt ; carga entero en ST(0)
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
valEnt FLOAT 25.0
Cita de: Иōҳ en 3 Julio 2012, 03:56 AM
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.
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
Gracias a ambos por la respuesta, me quedo con que por seguridad, al mezclar la FPU con la CPU, debo introducir un FWAIT. Saludos
Sip tienes razón _Enko no sé como se me pasó u.u
fild dword ptr [valEnt]
Cita de: Иōҳ en 25 Julio 2012, 03:47 AM
Sip tienes razón _Enko no sé como se me pasó u.u
fild dword ptr [valEnt]
Ahora iras al infierno y programaras en javascript por una eternidad >:D